/ Published in: C++
URL: /
Implementacija reda pomocu pokazivaca
Expand |
Embed | Plain Text
// 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 }
You need to login to post a comment.
