首页 > 代码库 > 行编辑程序
行编辑程序
接受用户从终端输入的数据,当用户发现刚刚键入的字符是错误的,‘#’表示前一个字符无效;‘@’表示当前行或之前的数据无效。
#include<iostream> #include<cstring> using namespace std; const int MAX_LENGTH=100; struct Stack{ char *top; char *base; int stacksize; }; void InitStack(Stack &S){ S.base=new char[MAX_LENGTH]; S.top=S.base; S.stacksize=MAX_LENGTH; } void Push(Stack &S,char e){ *(S.top++)=e; } void Pop(Stack &S,char &e){ e=*--S.top; } char GetTop(Stack &S){ return *(--S.top); } void ClearStack(Stack &S){ S.top=S.base; } void StackTraverse(Stack &S,Stack &t){ InitStack(t); char e; while(S.top>S.base){ Pop(S,e); Push(t,e); } } void PrintStack(Stack S){ char a; while(S.top>S.base){ Pop(S,a); cout<<a; } cout<<endl; } void LineEdit(){ char a[MAX_LENGTH]; Stack S,t; InitStack(S); char e; while(cin>>a){ int len=strlen(a); for(int i=0;i<len;i++){ if(a[i]==‘#‘) Pop(S,e); else if(a[i]==‘@‘) ClearStack(S); else Push(S,a[i]); } StackTraverse(S,t); PrintStack(t); } } int main(){ LineEdit(); }
行编辑程序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。