Advertisement
vadimk772336

Untitled

Oct 16th, 2019
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename T>
  5. class List {
  6. private:
  7.     List(const List&) = delete;
  8.     void operator=(const List&) = delete;
  9.  
  10.     struct Node {
  11.         T data;
  12.         Node* next;
  13.     };
  14.     Node* First;
  15.  
  16. public:
  17.     List()
  18.     {
  19.         First = NULL;
  20.         cout << "Constructor" << endl;
  21.     }
  22.  
  23.     List(T x)
  24.     {
  25.         First = new Node;
  26.         First->data = x;
  27.         First->next = NULL;
  28.         cout << "Constructor with parametr" << endl;
  29.     }
  30.  
  31.     void put_in_top(T x)
  32.     {
  33.         Node* el;
  34.         el = new Node;
  35.         if (First == NULL) {
  36.             el->data = x;
  37.             el->next = NULL;
  38.             First = el;
  39.         }
  40.         else {
  41.             el->data = x;
  42.             el->next = First;
  43.             First = el;
  44.         }
  45.     }
  46.  
  47.     void put_in_end(T x)
  48.     {
  49.         Node *z = First, *p;
  50.         p = new Node;
  51.         if (First == NULL) {
  52.             p->data = x;
  53.             p->next = NULL;
  54.             First = p;
  55.         }
  56.         else {
  57.             while (z->next != NULL) {
  58.                 z = z->next;
  59.             }
  60.             p = new Node;
  61.             p->next = NULL;
  62.             p->data = x;
  63.             z->next = p;
  64.         }
  65.     }
  66.  
  67.     void del_end()
  68.     {
  69.         Node *z = First, *p;
  70.         if (z == NULL) {
  71.             cout << "List is empty" << endl;
  72.         }
  73.         else {
  74.             if (z->next == NULL)
  75.                 del_top();
  76.             else {
  77.  
  78.                 while (z->next->next != NULL) {
  79.                     z = z->next;
  80.                 }
  81.                 p = z->next;
  82.                 z->next = NULL;
  83.                 delete (p);
  84.             }
  85.         }
  86.     }
  87.  
  88.     void del_top()
  89.     {
  90.         Node* z;
  91.         z = First;
  92.         if (z == NULL) {
  93.             cout << "List is empty" << endl;
  94.         }
  95.         else {
  96.             First = First->next;
  97.             delete z;
  98.         }
  99.     }
  100.  
  101.     ~List()
  102.     {
  103.         cout << "Destructor" << endl;
  104.         while (First != NULL) {
  105.             del_top();
  106.         }
  107.     }
  108.  
  109.     operator T() const
  110.     {
  111.         return (T)First->data;
  112.     }
  113.  
  114.     void output()
  115.     {
  116.         Node* z = First;
  117.         if (First == NULL)
  118.             cout << "There is nothing to display ";
  119.         else {
  120.             while (z != NULL) {
  121.                 cout << z->data << "  ";
  122.                 z = z->next;
  123.             }
  124.         }
  125.         cout << endl;
  126.     }
  127. };
  128. int main()
  129. {
  130.     int a = 3, b = 6;
  131.  
  132.     List<int> x;
  133.     x.output();
  134.     x.del_top();
  135.     x.del_end();
  136.     cout << endl;
  137.  
  138.     x.put_in_top(2);
  139.     x.put_in_end(9);
  140.     x.output();
  141.     cout << endl;
  142.  
  143.     List<int> c(a);
  144.     c.output();
  145.     c.put_in_top(4);
  146.     c.output();
  147.     c.del_top();
  148.     c.output();
  149.     c.put_in_top(8);
  150.     c.put_in_end(9);
  151.     c.output();
  152.     c.del_end();
  153.     c.output();
  154.  
  155.     system("pause");
  156.     return (0);
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement