思路:
栈作为输入缓冲区,每当从终端了接受一个字符之后先做如下判别:
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; }//switch ch = 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); }//LineEdit int main() { LineEdit(); return 0; }
原文地址:http://blog.csdn.net/zongyinhu/article/details/45601783