Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- struct IElem
- {
- char value;
- IElem *next;
- };
- class IStack
- {
- IElem *pbeg, *pend;
- int Size = 0;
- public:
- IStack()
- {
- pbeg = NULL;
- }
- int get_size()
- {
- return Size;
- }
- char top();
- void push(int val);
- char pop();
- };
- void IStack::push(int val)
- {
- IElem *ptr = new IElem;
- ptr->value = val;
- ptr->next = pbeg;
- pbeg = ptr;
- Size++;
- }
- char IStack::pop()
- {
- if (!pbeg)
- return -1;
- IElem *ptr = pbeg;
- int val = pbeg->value;
- pbeg = pbeg->next;
- Size--;
- delete ptr;
- return val;
- }
- char IStack::top()
- {
- if (!pbeg)
- return ',';
- char val = pbeg->value;
- return val;
- }
- int main()
- {
- IStack stack;
- string s;
- cin >> s;
- int dlina = s.length(), i = 1;
- stack.push(s[0]);
- while (i < dlina)
- {
- char a = stack.top();
- if (a == s[i])
- stack.pop();
- else if (a != s[i] || a == ',')
- stack.push(s[i]);
- i++;
- }
- int elements = stack.get_size();
- if (elements == 0)
- cout << " ";
- else
- {
- char *arr = new char[elements];
- for (int i = elements - 1; i >= 0; i--)
- arr[i] = stack.pop();
- for (int i = 0; i < elements; i++)
- cout << arr[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement