Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.14 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. class List
  7. {
  8.     int x, count;
  9.     List *Head, *Tail, *Next, *Prev;
  10. public:
  11.     List() :Head(NULL), Tail(NULL) {};
  12.     ~List();
  13.     void ShowForward();
  14.     void ShowBackwards();
  15.     void AddLast(int x);
  16.     void AddFirst(int x);
  17.     void DeleteItem(int x);
  18.     void Sort();
  19. };
  20.  
  21. List::~List()
  22. {
  23.     while (Head)
  24.     {
  25.         Tail = Head->Next;
  26.         delete Head;
  27.         Head = Tail;
  28.     }
  29. }
  30.  
  31. void List::AddLast(int x)
  32. {
  33.     List *temp = new List;
  34.     temp->Next = NULL;
  35.     temp->x = x;
  36.     count++;
  37.     if (Head != NULL)
  38.     {
  39.         temp->Prev = Tail;
  40.         Tail->Next = temp;
  41.         Tail = temp;
  42.     }
  43.     else
  44.     {
  45.         temp->Prev = NULL;
  46.         Head = Tail = temp;
  47.     }
  48. }
  49.  
  50. void List::AddFirst(int x)//HE HAD0
  51. {
  52.     List*temp = new List;
  53.     Head->Prev = temp;
  54.     Head = temp;
  55.     count++;
  56. }
  57.  
  58. void List::ShowBackwards()
  59. {
  60.     List *temp = Tail; //s konca
  61.  
  62.     while (temp != NULL)
  63.     {
  64.         cout << temp->x << " ";
  65.         temp = temp->Prev;
  66.     }
  67.     cout << endl;
  68. }
  69.  
  70. void List::ShowForward()
  71. {
  72.     List *temp = Head; //s nachala
  73.     while (temp != NULL)
  74.     {
  75.         cout << temp->x << " ";
  76.         temp = temp->Next;
  77.     }
  78.     cout << endl;
  79. }
  80.  
  81. void List::DeleteItem(int x)
  82. {
  83.     if ((x == 1) and (Head->Next))
  84.     {
  85.         List *temp = Head;
  86.         Head = Head->Next;
  87.         Head->Prev = NULL;
  88.         delete temp;
  89.         count--;
  90.         return;
  91.     }
  92.     else if ((x == 1) and (Head == Tail))
  93.     {
  94.         Head->Next = NULL;
  95.         Head = NULL;
  96.         delete Head;
  97.         count = 0;
  98.         return;
  99.     }
  100.  
  101.     else if (x == count) {
  102.         List *temp = Tail; 
  103.         Tail = Tail->Prev;         
  104.         Tail->Next = NULL; 
  105.         delete temp;
  106.         count--;         
  107.         return;    
  108.     }
  109.     else
  110.     {
  111.         List *temp = Head, *temp2;
  112.         for (int i = 0; i < x - 1; i++)
  113.             temp = temp->Next;
  114.         temp2 = temp;
  115.         temp2->Prev->Next = temp->Next;
  116.         temp2->Next->Prev = temp->Prev;
  117.         delete temp;
  118.         count--;
  119.     }
  120. }
  121.  
  122. //Вот в этом месте я хотел сдохнуть
  123.  
  124. void List::Sort()
  125. {
  126.     List*left = Head;
  127.     List*right = Head->Next;
  128.     List *temp = new List;
  129.     while (left->Next)
  130.     {
  131.         while (right)
  132.         {
  133.             if ((left->x) < (right->x))
  134.             {
  135.                 temp->x = left->x;
  136.                 left->x = right->x;
  137.                 right->x = temp->x;
  138.             }
  139.             right = right->Next;
  140.         }
  141.  
  142.         left = left->Next;
  143.         right = left->Next;
  144.     }
  145. }
  146.  
  147. void main1()
  148. {
  149.     List smert;
  150.     int n;
  151.     cout << "Введите число" << endl;
  152.     cin >> n;
  153.     int d;
  154.     cout << "Вводите числа списка" << endl;
  155.     for (int i = 0; i < n; i++)
  156.     {
  157.         cin >> d;
  158.         smert.AddLast(d);
  159.     }
  160.  
  161.     cout << "Введите номер элемента, который хотите удалить" << endl;
  162.     int i;
  163.     cin >> i;
  164.  
  165.     smert.DeleteItem(i);
  166.     cout << "Оставшийся список: " << endl;
  167.     smert.ShowForward();
  168. }
  169.  
  170. void main2()
  171. {
  172.     List smert2;
  173.     int n;
  174.     cout << "Введите число" << endl;
  175.     cin >> n;
  176.     int d;
  177.     cout << "Вводите числа списка" << endl;
  178.     for (int i = 0; i < n; i++)
  179.     {
  180.         cin >> d;
  181.         smert2.AddLast(d);
  182.     }
  183.     cout << "Введите число" << endl;
  184.     int h;
  185.     cin >> h;
  186.  
  187.     smert2.AddLast(h);
  188.     smert2.Sort();
  189.  
  190.     cout << "Оставшийся список: " << endl;
  191.     smert2.ShowForward();
  192. }
  193.  
  194. int main()
  195. {
  196.     setlocale(0, "rus");
  197.     main2();
  198.     system("pause");
  199.     return 0;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement