Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <conio.h>
  2. #include <iostream>
  3. class Elem
  4. {
  5.     int val;
  6.     class Elem* next;
  7. public:
  8.     Elem(int in) : next(0), val(in){}
  9.     friend class List;
  10. };
  11. class List {
  12.     Elem* head, * tail;
  13.     unsigned N=0;
  14. public:
  15.     List() : tail(0) {tail = head; }
  16.     void push_back(int data);
  17.     int pop_front();
  18.     void push(int data);
  19.     void insert(int data, unsigned n);
  20. };
  21. void List :: push_back(int data)
  22. {
  23.     Elem* e = new Elem(data);
  24.     if (head == NULL)
  25.     {
  26.         head = e;
  27.         tail = e;
  28.     }
  29.     else {
  30.         tail->next = e;
  31.         tail = e;
  32.     }
  33.     N++;
  34. }
  35. void List::push(int data)
  36. {
  37.     Elem* e = new Elem(data);
  38.     e->next = head;
  39.     head = e;
  40.     N++;
  41. }
  42. void List::insert(int data, unsigned n)
  43. {
  44.     if (n > N)
  45.     {
  46.         perror("Program Error");
  47.         return;
  48.     }
  49.     if (n == 0)
  50.     {
  51.         push(data);
  52.         return;
  53.     }
  54.     if (n == N)
  55.     {
  56.         push_back(data);
  57.         return;
  58.     }
  59.     Elem* e = head;
  60.     int counter = 0;
  61.     while (counter < n - 1)
  62.     {
  63.         e = e->next;
  64.         counter++;
  65.     }
  66.     Elem* p1 = new Elem(data);
  67.     Elem* p2 = e->next;
  68.     e->next = p1;
  69.     p1->next = p2;
  70.     ++N;
  71. }
  72. int List::pop_front()
  73. {
  74.     Elem* e = head;
  75.     int out = e->val;
  76.     head = e->next;
  77.     delete e;
  78.     --N;
  79.     return out;
  80. }
  81.  
  82. int main()
  83. {
  84.     List list;
  85.     for (int i = 1; i <= 10; ++i)
  86.         list.push_back(i * i);
  87.     list.insert(0, 0);
  88.     for (int i = 1; i <= 11; ++i)
  89.     {
  90.         int k = list.pop_front();
  91.         std::cout << k <<'\t';
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement