#include<iostream> using namespace std; struct Stack { char a; Stack *next; }; class UsSta { private: Stack *top,*base; public: UsSta() { top = new Stack; base = new Stack; top->next = base; base->next = NULL; } ~UsSta() { delete top; delete base; } void AddSta(char b) { Stack *p1 = new Stack; p1->a = b; p1->next = top->next; top->next = p1; } void DelSta() { top->next = top->next->next; } void VoiSta() { top->next = base; } void UseSta(char b[100]) { int i = 0; while(b[i]) { if(b[i] == '#') { DelSta(); } else if(b[i] == '@') { VoiSta(); } else { AddSta(b[i]); } i++; } } void PriSta() { char e[100]; int i = 0; Stack *p1 = top->next; while(p1->next != NULL) { e[i] = p1->a; p1 = p1->next; i++; } do { i--; cout <<e[i]; }while(i); cout <<endl; } }; int main() { UsSta Us; char h[100]; while(gets(h)) { Us.UseSta(h); Us.PriSta(); Us.VoiSta(); } } /************************************************************** Problem: 2143 User: admin Language: C++ Result: Accepted Time:14 ms Memory:2076 kb ****************************************************************/