Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. struct queue
  7. {
  8.     int val;
  9.     queue* prev;
  10.     queue* next;
  11. };
  12.  
  13. int main()
  14. {
  15.     queue *head = NULL; // poczatek, lista jest pusta
  16.     queue *tail = NULL; // koniec, lista jest pusta
  17.     queue *tmp = NULL; // wskaznik pomocniczy
  18.  
  19.     int wybor;
  20.     bool exit = 0;
  21.  
  22.     while (!exit)
  23.     {
  24.  
  25.         cout << "\n 1. ENQUEUE \n 2. DEQUEUE \n 3. PRINT \n 4. EXIT \n" << endl;
  26.         cin >> wybor;
  27.  
  28.         switch (wybor)
  29.         {
  30.         case 1:
  31.             tmp = new queue;
  32.             cout << "Podaj wartosc do dodania: ";
  33.             cin >> tmp->val;
  34.             if (head == NULL)
  35.             {
  36.                 tmp->next = tmp->prev = NULL;
  37.                 head = tail = tmp;
  38.             }
  39.             else
  40.             {
  41.                 tmp->next = NULL;
  42.                 tail->next = tmp; // dodajemy element na koniec wiec, ustawiamy wskaznik na niego w elemencie, ktory byl ostatni
  43.                 tmp->prev = tail; // poprzednikiem nowego elementu jest dotychczasowy ostatni element
  44.                 tail = tmp; // ustawiamy koniec kolejki na nowym elemencie
  45.             }
  46.             system("cls");
  47.             break;
  48.         case 2:
  49.             if (head != NULL)
  50.             {
  51.                 tmp = head;                         // ustawiamy tmp jako glowe
  52.  
  53.                 if (head == tail)                   // istnieje jeden element kolejki
  54.                 {
  55.                     head = tail = NULL;             // kolejka jest pusta
  56.                 }
  57.                 else                                // jesli jest wiecej elementow
  58.                 {
  59.                     head = head->next;              // head wskakuje na drugi element, bo pierwszy musimy usunac
  60.                 }
  61.                 delete tmp;                         // usuwamy element
  62.             }
  63.             else
  64.             {
  65.                 cout << "Kolejka jest pusta! \n";
  66.             }
  67.             system("cls");
  68.             break;
  69.         case 3:
  70.             if (head != NULL)
  71.             {
  72.                 cout << " <-- Kolejka: <-- ";
  73.  
  74.                 tmp = head;
  75.  
  76.                 while (tmp != NULL)                 // dopoki pokazujemy na jakis element stosu (listy)
  77.                 {
  78.                     cout << tmp->val << " ";
  79.                     tmp = tmp->next;        // przechodzimy na nastepny element na liscie
  80.                 }
  81.             }
  82.             else
  83.                 cout << "Kolejka jest pusta! \n";
  84.             break;
  85.         case 4:
  86.             exit = 1;
  87.             break;
  88.         }
  89.  
  90.     }
  91.  
  92.     system("PAUSE");
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement