Advertisement
allia

сокращение строки

Dec 10th, 2020
605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct IElem
  6. {
  7.    char value;
  8.    IElem *next;
  9. };
  10.  
  11. class IStack
  12. {
  13.    IElem *pbeg, *pend;
  14.    int Size = 0;
  15. public:
  16.    IStack()
  17.    {
  18.      pbeg = NULL;
  19.    }
  20.    int get_size()
  21.    {
  22.      return Size;
  23.    }
  24.    char top();
  25.    void push(int val);
  26.    char pop();
  27. };
  28.  
  29. void IStack::push(int val)
  30. {
  31.    IElem *ptr = new IElem;
  32.    ptr->value = val;
  33.    ptr->next = pbeg;
  34.    pbeg = ptr;
  35.    Size++;
  36. }
  37.  
  38. char IStack::pop()
  39. {
  40.    if (!pbeg)
  41.     return -1;
  42.    IElem *ptr = pbeg;
  43.    int val = pbeg->value;
  44.    pbeg = pbeg->next;
  45.    Size--;
  46.    delete ptr;
  47.    return val;
  48. }
  49.  
  50. char IStack::top()
  51. {
  52.    if (!pbeg)
  53.     return ',';
  54.    char val = pbeg->value;
  55.    return val;
  56. }
  57.  
  58. int main()
  59. {
  60.   IStack stack;
  61.   string s;
  62.  
  63.   cin >> s;
  64.   int dlina = s.length(), i = 1;
  65.  
  66.   stack.push(s[0]);
  67.  
  68.   while (i < dlina)
  69. {
  70.   char a = stack.top();
  71.     if (a == s[i])
  72.       stack.pop();
  73.     else if (a != s[i] || a == ',')
  74.       stack.push(s[i]);
  75.   i++;
  76. }
  77.  
  78.  int elements = stack.get_size();
  79.  if (elements == 0)
  80.   cout << " ";
  81.  else
  82.   {
  83.     char *arr = new char[elements];
  84.     for (int i = elements - 1; i >= 0; i--)
  85.       arr[i] = stack.pop();
  86.     for (int i = 0; i < elements; i++)
  87.       cout << arr[i];
  88.   }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement