SHARE
TWEET

Untitled

a guest Oct 23rd, 2019 91 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename T> class List
  5. {
  6. private:
  7.     // запрет на копирование и присваивание
  8.     List(const List&) = delete;
  9.     void operator=(const List&) = delete;
  10.  
  11.     struct spisok
  12.     {
  13.         T d;
  14.         spisok* next;
  15.     };
  16.     spisok* head;
  17.  
  18. public: //конструктор по умолчанию
  19.     List() {
  20.         head = NULL;
  21.     }
  22.     //конструктор с параметром Т 1
  23.     List(T x) {
  24.         head = new spisok;
  25.         head->d = x;
  26.         head->next = NULL;
  27.     }
  28.     //вставить элемент в начало
  29.     void vNACH(T x) {
  30.         spisok* z;
  31.         z = new spisok;
  32.         if (head == NULL) {
  33.             z->d = x;
  34.             z->next = NULL;
  35.             head = z;
  36.         }
  37.         else {
  38.             z->d = x;
  39.             z->next = head;
  40.             head = z;
  41.         }
  42.     }
  43.     //вставить элемент в конец
  44.     void vKON(T x) {
  45.         spisok* z = head, * p;
  46.         p = new spisok;
  47.         if (head == NULL) {
  48.             p->d = x;
  49.             p->next = NULL;
  50.             head = p;
  51.         }
  52.         else
  53.         {
  54.             while (z->next != NULL) {
  55.                 z = z->next;
  56.             }
  57.             p = new spisok;
  58.             p->next = NULL;
  59.             p->d = x;
  60.             z->next = p;
  61.         }
  62.     }
  63.     //удалить из конца
  64.     void delkon() {
  65.         spisok* z = head, * p;
  66.         if (z->next == NULL)
  67.             del1();
  68.         else {
  69.  
  70.             while (z->next->next != NULL) {
  71.                 z = z->next;
  72.             }
  73.             p = z->next;
  74.             z->next = NULL;
  75.             delete(p);
  76.         }
  77.     }
  78.     // удалить элемент из начала
  79.     void del1() {
  80.         spisok* z;
  81.         z = head;
  82.         if (z == NULL) {
  83.             cout << "itak pust" << endl;
  84.         }
  85.         else {
  86.             head = head->next;
  87.             delete z;
  88.         }
  89.     }
  90.     // деструктор
  91.     ~List() {
  92.         cout << "destructor" << endl;
  93.         while (head != NULL) {
  94.             del1();
  95.         }
  96.     }
  97.     //приведение к типу Т
  98.     operator T() const {
  99.         return (T)head->d;
  100.     }
  101.     //вывод списка
  102.     void vivod() {
  103.         spisok* z = head;
  104.         if (head == NULL) cout << "null" << endl;
  105.         else {
  106.             while (z != NULL) {
  107.                 cout << z->d << "  ";
  108.                 z = z->next;
  109.             }
  110.         }
  111.         cout << endl;
  112.     }
  113. };
  114. int main() {
  115.     int a = 1, b = 4;
  116.     List<int> z;
  117.     z.vivod();
  118.     z.del1();
  119.     z.vNACH(3);
  120.     z.vKON(9);
  121.     z.vivod();
  122.     List<int> c(a);
  123.     c.vivod();
  124.     c.vNACH(5);
  125.     c.vivod();
  126.     c.del1();
  127.     c.vivod();
  128.     c.vNACH(7);
  129.     c.vKON(9);
  130.     c.vivod();
  131.     c.delkon();
  132.     c.vivod();
  133.     //List<int> x = z;
  134.     //x = z;
  135.     system("pause");
  136.     return(0);
  137. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top