allia

g

Nov 23rd, 2020
564
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  struct ListElem
  5. {
  6.    int value;
  7.    ListElem *next;
  8. };
  9.  
  10. class List
  11. {
  12.    ListElem *pbeg, *pend;
  13.    ListElem *find_elem(int keyval, ListElem*& prev);
  14.    int Size = 0;
  15. public:
  16.    List() {  pend = pbeg = NULL; }
  17.    int get_Size() { return Size; }
  18.    void push_front(int val);
  19.    int pop_front();
  20.    bool remove(int keyval);
  21.    int top();
  22. };
  23.  bool List::remove(int keyval)
  24. {
  25.    ListElem *prem, *prev;
  26.    prem = find_elem(keyval, prev);
  27.  
  28.    if (!prem)
  29.     return false;
  30.    if (!prev)
  31.     pbeg = pbeg->next;
  32.    else
  33.     prev->next = prem->next;
  34.    if (prem == pend)
  35.     pend = prev;
  36.    delete prem;
  37.    return true;
  38. }
  39.  
  40. ListElem* List::find_elem(int keyval, ListElem*& prev)
  41. {
  42.    ListElem *pcur = pbeg;
  43.    prev = NULL;
  44.    while (pcur && pcur->value != keyval)
  45.    {
  46.       prev = pcur; pcur = pcur->next;
  47.    }
  48.    return pcur;
  49. }
  50.  
  51. void List::push_front(int val)
  52. {
  53.    ListElem *pnew = new ListElem;
  54.    pnew->value = val;
  55.    pnew->next = pbeg;
  56.    pbeg = pnew;
  57.    if (!pend)
  58.      pend = pnew;
  59.   Size++;
  60. }
  61.  
  62. int List::pop_front()
  63. {
  64.    if (!pbeg)
  65.     return -1;
  66.    ListElem *ptr = pbeg;
  67.    int val = pbeg->value;
  68.    pbeg = pbeg->next;
  69.    if (!pbeg) pend = NULL;
  70.    delete ptr;
  71.    return val;
  72. }
  73.  
  74. int main ()
  75. {
  76.   List lst;
  77.   int number, znach, index, n;
  78.   cin >> n;
  79.  
  80.   for ( int i = 0; i< n; i++)
  81.    {
  82.     cin >> number;
  83.     lst.push_front(number);
  84.    }
  85.  
  86.  
  87.   int dlina = lst.get_Size();
  88.  
  89.   znach = lst.pop_front();
  90.  
  91.   lst.remove(znach);
  92.  
  93.   dlina = dlina - 2;
  94.  
  95.   int *arr = new int[dlina];
  96.  
  97.   for (int i = 0; i < dlina; i++)
  98.    arr[i] = lst.pop_front();
  99.  
  100.   for (int i = dlina - 1; i >= 0; i--)
  101.     cout << arr[i] << " ";
  102. }
RAW Paste Data