Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- using namespace std;
- struct queue
- {
- int val;
- queue* prev;
- queue* next;
- };
- int main()
- {
- queue *head = NULL; // poczatek, lista jest pusta
- queue *tail = NULL; // koniec, lista jest pusta
- queue *tmp = NULL; // wskaznik pomocniczy
- int wybor;
- bool exit = 0;
- while (!exit)
- {
- cout << "\n 1. ENQUEUE \n 2. DEQUEUE \n 3. PRINT \n 4. EXIT \n" << endl;
- cin >> wybor;
- switch (wybor)
- {
- case 1:
- tmp = new queue;
- cout << "Podaj wartosc do dodania: ";
- cin >> tmp->val;
- if (head == NULL)
- {
- tmp->next = tmp->prev = NULL;
- head = tail = tmp;
- }
- else
- {
- tmp->next = NULL;
- tail->next = tmp; // dodajemy element na koniec wiec, ustawiamy wskaznik na niego w elemencie, ktory byl ostatni
- tmp->prev = tail; // poprzednikiem nowego elementu jest dotychczasowy ostatni element
- tail = tmp; // ustawiamy koniec kolejki na nowym elemencie
- }
- system("cls");
- break;
- case 2:
- if (head != NULL)
- {
- tmp = head; // ustawiamy tmp jako glowe
- if (head == tail) // istnieje jeden element kolejki
- {
- head = tail = NULL; // kolejka jest pusta
- }
- else // jesli jest wiecej elementow
- {
- head = head->next; // head wskakuje na drugi element, bo pierwszy musimy usunac
- }
- delete tmp; // usuwamy element
- }
- else
- {
- cout << "Kolejka jest pusta! \n";
- }
- system("cls");
- break;
- case 3:
- if (head != NULL)
- {
- cout << " <-- Kolejka: <-- ";
- tmp = head;
- while (tmp != NULL) // dopoki pokazujemy na jakis element stosu (listy)
- {
- cout << tmp->val << " ";
- tmp = tmp->next; // przechodzimy na nastepny element na liscie
- }
- }
- else
- cout << "Kolejka jest pusta! \n";
- break;
- case 4:
- exit = 1;
- break;
- }
- }
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement