stack 行编辑程序

下面的程序使用stack实现了行编辑程序:

//# 表示前一个字符无效
//@ 表示当前行中的字符均无效
#include<iostream>
#include<stack>
using namespace std;
int main(){
    stack<int> st1,st2;
    char ch;
    ch=getchar();
    while(ch!='0'){
        while(ch!='0'&&ch!='\n'){
            switch(ch){
                case '#':
                    st1.pop();
                    break;
                case '@':
                    while(!st1.empty())
                        st1.pop();
                    break;
                default:
                    st1.push(ch);
                    break;
            }
            ch=getchar();
        }
        while(!st1.empty()){
            st2.push(st1.top());
            st1.pop();
        }
        while(!st2.empty()){
            cout<<(char)st2.top();  //内存中所有字符型数据都以ASCII码存储,所以此处需要强制转换
            st2.pop();
        }
        cout<<endl;
        if(ch!=EOF)
            ch=getchar();
    }
    return 0;
}


你可能感兴趣的:(stack,行编辑程序)