/ Published in: C++
Implementacija reda pomocu pokazivaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
// Implementacija programa pomoću pokazivaÄa - Kristian Maretić #include <iostream> using namespace std; typedef struct el_red red; typedef struct red_ordinacija el_reda_ordinacije; struct pacijent // struktura podataka koji se zapisuju u red { int x, y; // random upisani brojevi int rb_pacijenta; // redni broj pacijenta int prioritet; // prioritet pacijenta }; struct red_ordinacija // struktura reda { pacijent p; // vrijednost elementa u redu (svakog pacijenta) red_ordinacija *next; // definicija pokazivaÄa na slijedeći element u redu }; struct el_red // struktura elemenata reda { red_ordinacija *front, *rear; }; bool IsEmptyQ(red *_r) // provjera je li red prazan { bool retVal; if (_r -> rear == _r -> front) // red je prazan ako je pokazivaÄ na poÄetak i kraj reda jednak { retVal = true; } else { retVal = false; } return retVal; } void InitQ (red *_r) // inicijalizacija praznog reda { el_reda_ordinacije *head = new el_reda_ordinacije; // inicijalizacija novog elementa reda _r -> front = head; // postavlja se pokazivaÄ fronta na novi element _r -> rear = head; // postavlja se pokazivaÄ frara na novi element to znaÄi da je red inicijaliziran ali i prazan } pacijent FrontQ(red *_r) // vraćanje vrijednosti elementa koji se nalazi na Äelu reda { if (!IsEmptyQ(_r)) // provjera da li je red prazan { // ako red nije prazan el_reda_ordinacije *_temp = _r -> front; // element na Äelu se sprema u privremenu _temp varijablu _temp = _temp -> next; // postavlja se na Äelo element koji je slijedeći u redu return _temp -> p; // postavlja se vrijednost pacijentu } } void DeQueueQ(red *_r) // brisanje elementa s Äela reda { if (!IsEmptyQ(_r)) // provjera dali je red prazan { el_reda_ordinacije *_del = _r -> front; //element sa Äela reda sprema se u privremenu _del varijablu _r -> front = _del -> next; // postavlja se novi element Äela koji je slijedeći u redu delete _del; // briÅ¡e se element s Äela } } void EnQueueQ (pacijent x, red *_r) // dodavanje novog elementa na zaÄelje reda { el_reda_ordinacije *_last = _r -> rear; // element s zaÄelja reda sprema se u privremenu _last varijablu el_reda_ordinacije *_new = new el_reda_ordinacije; // inicijalizira se novi element reda koji će se postavit na zaÄelje _new -> p = x; // u novi element sprema se proslijeÄ‘ena vrijednost pacijenta _new -> next = NULL; // postavlja se pokazivaÄ novog elementa na NULL pokazivaÄ _last -> next = _new; // postavlja se pokazivaÄ prethodnog zadnjeg na novi element koji je na zaÄelju _r -> rear = _new; // novo ubaÄeni element postavlja se na zaÄelje reda }
URL: /