Return to Snippet

Revision: 53899
at December 3, 2011 05:44 by maretic_kristian


Initial Code
// 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
    }

Initial URL
/

Initial Description
Implementacija reda pomocu pokazivaca

Initial Title
red_pokazivac.h

Initial Tags


Initial Language
C++