Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Cozi

Informatica


Structuri de date liniare

Cozi

O coada este o lista liniara in care stergerea si accesarea unui element se pot face numai pe la un capat al cozii, numit front, iar inserarea se face la celalalt capat al cozii, numit rear. Se poate face o analogie intre o coada folosita in programar 939j95j e si, de exemplu, o coada pentru tiparirea mai multor fisiere text. Pentru tiparirea unui nou fisier va trebui sa asteptam pana cand toate fisierele sunt tiparite in ordinea in care comenzile de tiparire au fost efectuate.



stergere

 


front

inserare

 
rear

Cozile se mai numesc si liste FIFO (first in/first out) deoarece primul element care este extras din coada este primul introdus.

Vom nota inserarea unui element a intr-o coada C: a C, iar stergerea unui element a dintr-o coada C: C a.

3.1 Alocarea secventiala

In alocarea secventiala, presupunand ca avem o coada definita

T x[N];

unde N este o constanta suficient de mare, T este un tip de date definit anterior (eventual printr-o definitie de tipul typedef), iar elementele cozii sunt in ordine x[R], x[R+1], ..., x[F], cu indicii 0 R F N - 1

x[R] x[R+1] x[F]

atunci operatia de inserare elem_nou C se poate descrie astfel:

if R = 0 and F = N - 1 then OVERFLOW

else if R > 0 then x[R - 1] = elem_nou

R = R -1

else for i = F, R, -1

x[i+1] = x[i]

endfor

x[0] = elem_nou

F = F +1

endif

endif

iar operatia de stergere C elem_sters se poate descrie astfel:

if R > F then UNDERFLOW

else elem_sters = x[F]

F = F -1

endif

3.2 Alocarea inlantuita

In alocarea inlantuita, folosim aceeasi structura ca si in cazul listei liniare

struct nod

typedef struct nod NOD;

unde T este presupus definit anterior (eventual printr-o definitie typedef) si notam cu front, si respectiv rear, pointerul la primul nod al cozii, si respectiv la ultimul nod.

NOD *front, rear;

Cu aceste notatii, operatiile cu cozi se pot descrie astfel:

inserarea unui nod nou:

Algoritm: Folosim variabilele info_nou ce contine valoarea informatiei nodului ce trebuie introdus in lista si p pointer la un nod.

Aloca memorie pentru un nod nou. 

Returneaza p, un pointer la noul nod.

if p NULL then

p -> link = NULL

p -> info = info_nou



rear -> link = p

rear = p

else OVERFLOW

endif

 


front


...........


rear

p

 

info_nou

NULL

 

stergerea/accesarea unui nod:

Algoritm:

if front = NULL then UNDERFLOW

else elem_sters = front -> info

front = front -> link

endif

info

  front

NULL

 
.............

rear

Scrieti un program care implementeaza algoritmii de mai sus pentru o coada.




Document Info


Accesari: 2307
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )