Advertisement
allia

вставка элемента

Nov 23rd, 2020 (edited)
769
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  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);
  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 insert(int val, int znach);
  21.    int top();
  22. };
  23.  
  24. ListElem* List::find_elem(int keyval)
  25. {
  26.    ListElem *pcur = pbeg;
  27.    int shet = 0;
  28.    for (; pcur; pcur = pcur->next)  
  29.     {
  30.       shet++;
  31.       if (shet == keyval)
  32.       goto printl;
  33.     }
  34.    printl:
  35.    return pcur;
  36. }
  37.  
  38. bool List::insert(int val, int znach)
  39. {
  40.   ListElem *ptr = find_elem(val);
  41.    if (!ptr) return false;
  42.    ListElem *pnew = new ListElem;
  43.    pnew->value = znach;
  44.    pnew->next = ptr->next;
  45.    ptr->next = pnew;
  46.    return true;
  47. }
  48.  
  49. void List::push_front(int val)
  50. {
  51.    ListElem *pnew = new ListElem;
  52.    pnew->value = val;
  53.    pnew->next = pbeg;
  54.    pbeg = pnew;
  55.    if (!pend)
  56.      pend = pnew;
  57.   Size++;
  58. }
  59.  
  60. int List::pop_front()
  61. {
  62.    if (!pbeg)
  63.     return -1;
  64.    ListElem *ptr = pbeg;
  65.    int val = pbeg->value;
  66.    pbeg = pbeg->next;
  67.    if (!pbeg) pend = NULL;
  68.    delete ptr;
  69.    return val;
  70. }
  71.  
  72. int main ()
  73. {
  74.   List lst;
  75.   int number, znach, index, n;
  76.   //cin >> n;
  77.  
  78.   //for ( int i = 0; i< n; i++)
  79.   while (cin >> number)
  80.     lst.push_front(number);
  81.  
  82.  
  83.   int dlina = lst.get_Size();
  84.  
  85.   index = dlina - lst.pop_front() - 1;
  86.   znach = lst.pop_front();
  87.  
  88.   if (index == 0)
  89.    lst.push_front(znach);
  90.   else
  91.     lst.insert(index, znach);
  92.     dlina--;
  93.  
  94.   int *arr = new int[dlina];
  95.  
  96.   for (int i = 0; i < dlina; i++)
  97.    arr[i] = lst.pop_front();
  98.  
  99.   for (int i = dlina - 1; i >= 0; i--)
  100.     cout << arr[i] << " ";
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement