Advertisement
spacerose

Untitled

Sep 22nd, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.85 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include<stdio.h>
  4. #include<time.h>
  5. #include<math.h>
  6. #include<stdlib.h>
  7. #include<string.h>
  8. #pragma hdrstop
  9.  
  10. struct item
  11. {
  12.     int data;
  13.     item* next;
  14. };
  15. item* head, * tail;
  16. void add(int x); //добавить эл-т в очередь с приоритет включением
  17. void delet1(void); //извлечение эл-та из головы
  18. void fromhead(void); //получить эл-т из голoвы
  19. void out(void); //вывод очереди
  20. bool isnull(void) { return head == NULL; } //проверка на пустоту
  21. void clrscr(void); //очистка очереди
  22. //---------------------------------------------------------------------------
  23. using namespace std;
  24. int main()
  25. {
  26.     int i = 1, num, z;
  27.     head = NULL; tail = NULL;
  28.     cout << "                           Welcome, friends!!!" << endl;
  29.     while (i != 2)
  30.     {
  31.         cout << "What action do you want do? - " << endl;
  32.         cout << "                              1-Add symbol;" << endl;
  33.         cout << "                              2-Get symbol from head" << endl;
  34.         cout << "                              3-extract symbol from head;" << endl;
  35.         cout << "                              4-Output;" << endl;
  36.         cout << "                              5-Delete elements;" << endl;
  37.         cin >> num;
  38.         switch (num)
  39.         {
  40.         case 1: cout << "Enter symbol,which you want add:" << endl;
  41.             cin >> z;  add(z);  out(); break;
  42.         case 2: fromhead(); break;
  43.         case 3: delet1(); break;
  44.         case 4: out(); break;
  45.         case 5: clrscr(); break;
  46.         }
  47.         cout << "You want do any action?-" << endl;
  48.         cout << "1-Ok!, 2-No,thanks!" << endl;
  49.         cin >> i;
  50.     }
  51.     return 0;
  52. }
  53. //---------------------------------------------------------------------------
  54. void add(int x)   //добавить эл-т в очередь с приоритет включением
  55. {
  56.     item* p = new item;      //новый указатель на очередь
  57.     p->data = x; p->next = NULL; //присваиваем ему вводимое значение и конец очереди
  58.     item* v = new item;       //указат для нового числа
  59.     item* p1 = new item;     //указатель для просмотра очереди (следующие число)
  60.     item* p2 = new item;     //указатель для ввода числа (предыдущее число)
  61.     int i = 0;           // флажок
  62.     if (isnull()) head = tail = p;     //проверка на конец и запись числа
  63.     else {
  64.         p2 = head;
  65.         p1 = head;
  66.         while (p1 != NULL) //пока очередь не закончится
  67.         {
  68.             if (i == 1)
  69.             {
  70.                 if (x <= p1->data) //число меньше чем в очереди
  71.                 {
  72.                     v->data = x; // присваиваем новое число
  73.                     v->next = p1; //присваиваем следующее число
  74.                     p2->next = v; //запись нового числа
  75.                     return;        //выход
  76.                 }
  77.                 p2 = p2->next;    //рассматриваем следующие число  
  78.             }
  79.             else
  80.             {
  81.                 if (x <= p1->data) //число меньше чем в очереди
  82.                 {
  83.                     v->data = x;    // присваиваем новое число
  84.                     v->next = p1;  //присваиваем следующее число
  85.                     head = v;    //запись нового числа в голову очереди
  86.                     return;
  87.                 }
  88.             }
  89.             p1 = p1->next;   //рассматриваем следующие число
  90.             i = 1;
  91.         }
  92.         if (p1 == NULL) //конец очереди
  93.         {
  94.             tail->next = p; //последний элемент стал предпоследним
  95.             tail = p;       // обновили указатель на хвост
  96.         }
  97.     }
  98.  
  99. }
  100. //---------------------------------------------------------------------------
  101.  
  102. void delet1()   //извлечение эл-та из головы
  103. {
  104.     if (isnull())  cout << "Clear" << endl; //проверка на пустоту
  105.     else {
  106.         item* p = head; //присваиваем переменной голову очереди  
  107.         head = head->next; //голове присваиваем следующие значение очереди
  108.         delete p;       //удаляем старое значение головы
  109.     }
  110. }
  111.  
  112. //---------------------------------------------------------------------------
  113.  
  114. void fromhead()  //получение эл-та из головы
  115. {
  116.     if (isnull())  cout << "Ochered pysta" << endl; //проверка на пустоту
  117.     else cout << "Head = " << head->data << endl;
  118. }
  119.  
  120. //---------------------------------------------------------------------------
  121.  
  122. void out()//вывод очереди
  123. {
  124.     item* p = new item;
  125.     if (isnull()) cout << "Clear" << endl; //проверка на пустоту
  126.     else {
  127.         cout << "Ochered = ";
  128.         p = head;      //присваиваем голову переменной
  129.         while (!isnull()) //пока не конец очереди выводим на экран
  130.         {
  131.             if (p != NULL)
  132.             {
  133.                 cout << p->data << " ";
  134.                 cout << "->";
  135.                 p = p->next;
  136.             }
  137.             else { cout << "NULL" << endl; return; }
  138.         }
  139.     }
  140. }
  141.  
  142. //---------------------------------------------------------------------------
  143.  
  144. void clrscr() //очистка очереди
  145. {
  146.     while (!isnull()) delet1();
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement