/ Published in: C++
URL: /
Implementacija reda pomocu cirkularnog polja
Expand |
Embed | Plain Text
// Implementacija programa pomoću polja - Kristian Maretić #include <iostream> using namespace std; #define velicina_reda 10000 // definiranje veličine reda typedef int el_reda_ordinacije; typedef struct red_ordinacija red; 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[velicina_reda]; // vrijednost elementa u redu (svakog pacijenta) el_reda_ordinacije front,rear; // definiranje prvog i poslijednjeg elementa reda }; int AddOne(int n) // provjera ostatak cjelobrojnog dijeljenja (modulo) reara/ ili fonta s ukupnom veličinom reda { return((n+1)%velicina_reda); // vraća ostatk cjelobrojnog dijeljenjadijeljenja } bool IsEmptyQ(red *_r) // provjera je li red prazan { bool retVal; if( AddOne(_r -> rear)== _r -> front) // provjera cirkularnog polja ukoliko je ostatak cjelobrojnog djeljenja posljednjeg elementa u redu { // i veličine reda jednak prvom elementu reda, red je prazan retVal = true; } else { retVal = false; } return retVal; } void InitQ(red *_r) // inicijalizacija praznog reda { _r -> front = 0; // red je inicijaliziran ako se zauzme cijela njegova veličina - čelo na 0-tu adresu _r -> rear = velicina_reda-1; // začelje na 9999-tu adresu } pacijent FrontQ(red *_r) // vraćanje vrijednosti elementa koji se nalazi na čelu reda { if (!IsEmptyQ(_r)) // provjera da li je red prazan { return _r -> p [_r -> front]; // postavlja pacijentu vrijednost elementa sa čela reda } } void DeQueueQ(red *_r) // brisanje elementa s čela reda { if (!IsEmptyQ(_r)) // provjera da li je red prazan { _r -> front = AddOne(_r -> front); // adresa čela reda je ostatak cjelobrojnog djeljenja trenutnog čela reda i ukupne veličine reda } } void EnQueueQ (pacijent x, red *_r) // dodavanje novog elementa na začelje reda { _r -> rear = AddOne(_r->rear); // postavljanje novog elementa na začelje (pacijenta) - povečanje je ostatak cjelobrojnog djeljenja veličine reda i // adrese elementa začelja _r -> p [_r -> rear]= x; // postavljanje vrijednosti pacijenta u element na začelju reda }
You need to login to post a comment.
