栈的应用之行编辑程序

来源:互联网 发布:手机淘宝有好货报名 编辑:程序博客网 时间:2024/05/16 10:48

思路:

栈作为输入缓冲区,每当从终端了接受一个字符之后先做如下判别:

1:若是退格符#,从栈顶删去一个元素,即出栈Pop;

2:若是退行符@,将字符栈清空,即clear;

3:若不是#或@,即为有效字符,将该字符入栈,即Push;

顺序栈的代码:点击打开链接

只需将 typedef int ElemType -------->>> typedef char ElemType 

#include"stack.h"void LineEdit(){Stack st;InitStack(&st);char item;int ch = getchar();while(ch != EOF)//全文结束符{/*确定的某行编辑*/while(ch != EOF && ch != '\n')//输入的字符不是结束符和回车符(行结束符){switch(ch){/*退格符(非空时出栈)*/case '#':if(!IsEmpty(&st))Pop(&st,&item);break;/*退行符(清空栈)*/case '@':clear(&st);break;/*有效字符(未满时入栈)*/default:if(!IsFull(&st)) Push(&st,ch);break;}//switchch = getchar();}//while/*将字符栈的内容送至代用过程的缓冲区:此处仅仅将其打印出来*/int i;cout<<"the content is:";for(i = 0;i<=st.top-1;++i){cout<<st.base[i];}cout<<endl;clear(&st);/*全文未结束输入:进行下一行编辑*/if(ch != EOF)ch = getchar();}/*调用完之后,销毁栈,防止内存泄露*/destory(&st);}//LineEditint main(){LineEdit();return 0;}





0 0
原创粉丝点击