DS堆疊--行編輯
阿新 • • 發佈:2018-11-09
題目描述
使用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; }