请各位高手帮忙啊!一个栈的问题
编译连接都行,就是运行出问题。
#include<iostream.h>
#define MAX 10
struct stack
{
int pos;
char T[MAX];
};
int main()
{
void set_null(stack);
char pop(stack);
bool empty(stack);
void push(char,stack);
stack A;
char data;
cout<<"push a data:\n";
cin>>data;
push(data,A);
cout<<"push a data:\n";
cin>>data;
push(data,A);
cout<<"pop a data:\n";
cout<<pop(A);
return 0;
}
void set_null(stack S)
{
S.pos=0;
}
bool empty(stack S)
{
if(S.pos==0)
return true;
else
return false;
}
void push(char data,stack S)
{
if(S.pos<MAX)
S.T[++S.pos]=data;
else
cerr<<"overflow!\n";
}
char pop(stack S)
{
if(S.pos>0)
return S.T[--S.pos];
else
{
cerr<<"the stack is empty!\n";
return -1;
}
}
[解决办法]
int main(){ void set_null(stack);char pop(stack);bool empty(stack);void push(char,stack &);//<---------------引用stack A;char data;A.pos=-1;//<------------------------------初始化cout<<"push a data:\n";cin>>data;push(data,A);cout<<"push a data:\n";cin>>data;push(data,A);cout<<"pop a data:\n";cout<<pop(A);return 0;}void set_null(stack S){S.pos=0;}bool empty(stack S){if(S.pos==0)return true;elsereturn false;}void push(char data,stack &S)//<---------------引用{if(S.pos<MAX)S.T[++S.pos]=data;elsecerr<<"overflow!\n";}char pop(stack S){if(S.pos>0)return S.T[S.pos--];//<---------hereelse{cerr<<"the stack is empty!\n";return -1;}}