1. 程式人生 > >DS堆疊--行編輯

DS堆疊--行編輯

題目描述

使用C++的STL堆疊物件,編寫程式實現行編輯功能。行編輯功能是:當輸入#字元,則執行退格操作;如果無字元可退就不操作,不會報錯

本程式預設不會顯示#字元,所以連續輸入多個#表示連續執行多次退格操作

每輸入一行字元打回車則表示字串結束

注意:必須使用堆疊實現,而且結果必須是正序輸出

 

輸入

第一行輸入一個整數t,表示有t行字串要輸入
第二行起輸入一行字串,共輸入t行

輸出

每行輸出最終處理後的結果,如果一行輸入的字串經過處理後沒有字元輸出,則直接輸出NULL

樣例輸入

4 chinaa# sb#zb#u ##shen###zhen### chi##a#####

樣例輸出

china szu sz NULL

 

#include <iostream>
#include <stack>
#include <string>

using namespace std;
void test()
{
    string s;
    cin>>s;
    char p;
    stack<char> Q,T;
    for(int i=0;i<s.length();i++)
    {
        p=s[i];
        if(p=='#')
        {
            if(!Q.empty())
                Q.pop();
        }
        else
            Q.push(p);
    }
    if(Q.empty())
    {
        cout<<"NULL";
    }
    else
    {
        while(!Q.empty())
        {
            p=Q.top();
            Q.pop();
            T.push(p);
        }
        while(!T.empty())
        {
            p=T.top();
            T.pop();
            cout<<p;
        }
    }
    cout<<endl;
}

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        test();
    }


    return 0;
}