请教大神:行编辑程序错在哪儿,找了好久都没找到。
#define stack_init_size 1000
#include"iostream"
using namespace std;
struct Stack{
char *base;
char *top;
int stacksize;
};
Stack s;
//初始化一个空栈
int initStack(Stack &s)
{
s.base=(char *)malloc(stack_init_size*sizeof(char));
if(!s.base)
return 0;
s.top=s.base;
s.stacksize=stack_init_size;
return 1;
}
//出栈
int Pop(Stack &s,char &e)
{
if(s.top==s.base)
return 0;
e=*--s.top;
return 1;
}
//入栈
int Push(Stack &s,char e)
{
*s.top++=e;
return 1;
}
//清空栈
int ClearStack(Stack &s)
{
s.top=s.base;
return 0;
}
//销毁栈
void destroyStack(Stack &s)
{
free(s.base);
s.top=s.base=NULL;
s.stacksize=0;
}
//判断是否为空
int EmptyStack(Stack s)
{
if(s.top==s.base)
return 1;
return 0;
}
//输出字符
int visit(char e)
{
cout<<e;
return 1;
}
//倒序输出
int StackTraverse(Stack &s,int(* visit)(char))
{
while(s.base<=s.top)
{
visit(*s.base);
s.base++;
}
return 1;
}
//行编辑程序函数
void LineEdit()
{
char c,ch;
initStack(s);
ch=getchar();
while(ch!=EOF){
while(ch!=EOF||ch!='/n')
{
switch(ch){
case '#':Pop(s,c);break;
case '@':ClearStack(s);break;
default:Push(s,ch);break;
}
ch=getchar();
}
while(!EmptyStack(s))
{
char e;
Pop(s,e);
cout<<e;
}
if(ch!=EOF)
ch=getchar();
}
destroyStack(s);
}
//主函数
void main()
{
LineEdit();
}