#include #include #include #include using namespace std; // element Declaration struct element { int priorytet; int data; struct element *link; }; // Class Priority Queue class Kolejka_priorytetowa { private: element *front; public: Kolejka_priorytetowa() { front = NULL; } //Insert into Priority Queue void Dodawanie(int wart, int priorytet) { element *obecny, *q; obecny = new element; obecny->data = wart; obecny->priorytet = priorytet; if (front == NULL || priorytet < front->priorytet) { obecny->link = front; front = obecny; } else { q = front; while (q->link != NULL && q->link->priorytet <= priorytet) q=q->link; obecny->link = q->link; q->link = obecny; } } //Delete from Priority Queue void Usuwanie() { element *obecny; if(front == NULL) cout<<"Kolejka jest pusta!\n"; else { obecny = front; cout<<"Usunieto element: "<data<link; free(obecny); } } // Print Priority Queue void Wyswietlanie() { element *wsk; wsk = front; if (front == NULL) cout<<"Kolejka jest pusta!\n"; else { cout<<"Kolejka :\n"; cout<<"Priorytet Element\n"; while(wsk != NULL) { cout<priorytet<<" "<data<link; } } } }; int main() { int wyb, wart, priorytet; Kolejka_priorytetowa pq; do { cout<<"\n1.Dodawanie elementu 2.Usuwanie elementu 3.Wyswietlanie elementu 4.Wyjscie\n"; cin>>wyb; switch(wyb) { case 1: cout<<"Podaj wartosc : "; cin>>wart; cout<<"Dodaj priorytet : "; cin>>priorytet; pq.Dodawanie(wart, priorytet); break; case 2: pq.Usuwanie(); break; case 3: pq.Wyswietlanie(); break; case 4: break; default : cout<<"Zly wybor\n"; } } while(wyb != 4); return 0; }