30/09/2018, 20:09

Cài đặt stack bằng mảng

Mn sửa giúp mk bài này vs. Nó k chạy đk là sao?

#include<iostream>
#define max 100
using namespace std;
typedef struct stack{
	int top;
	int node[max];
};
void Init(stack *s){
	s->top=0;
}
int Empty(stack *s){
	if(s->top==-1)
		return 1;
		return 0;
}
int Full(stack *s){
	if(s->top== max-1)
	return 1;
	return 0;
}
void push(stack *s,int x){
	if(!Full(s)){ //neu chua tran
	s->top++;
	s->node[s->top] =x;
}
else cout<<"tran ";
} 
void Input(stack *s){
	int n,x;
//	while(n>max || n<1 ){
		cout<<"
 Nhap so phan tu cua stack < "<<max<<" : ";
		cin>>n;
//	}
	for(int i=0;i<n;i++){
		cout<<" nhap ptu thu "<<i<<"   ";
		cin>>x;
		push(s,x);
	}
}
void output(stack *s){
	for(int i=s->top-1;i>0;i--){
		cout<<s->node[i]<<endl;
	}
}
int main(){
	stack *s;
	int x;
	Input(s);
	output(s);
	return 0;
}
Minh Quân viết 22:13 ngày 30/09/2018

Sao không dùng thư viện stack luôn, thích kiểu nào cũng được #include <stack>

Sáng Béo viết 22:11 ngày 30/09/2018
void Init(stack *s){
	s->top=0;
}
int Empty(stack *s){
	if(s->top==-1)
		return 1;
	return 0;
}

Chỗ này Empty thế này thì Init phải cho top = -1 chứ.


Mà bạn để code trong markdown đi, để không thế nó hiển thị lỗi quá.

Gió viết 22:19 ngày 30/09/2018

Trước khi sử dụng con trỏ thì bạn nên gán địa chỉ hoặc cấp phát bộ nhớ cho nó.

Sáng Béo viết 22:09 ngày 30/09/2018
void output(stack *s){
	for(int i=s->top-1;i>0;i--){
		cout<<s->node[i]<<endl;
	}
}

quên mất cả hàm này cho i chạy từ s->top và chạy đến 0.

stack *s;

rồi chỗ này như Gió nói, phải cấp phát bộ nhớ cho nó nữa:
stack *s = new stack();

Bài liên quan
0