Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Coada
Coada este lista liniara in care adaugarea de noi elemente se face la un capat, iar extragerea unui element se poate face numai prin celalalt capat al listei.
Coada, ca element cotidian, este un element binecunoscut. Se poate sta la 'coada' la un ghiseu pentru procurarea unor bilete, la un magazin pentru cumpararea unor produse, la urcarea intr-un mijloc de transport etc.
Din definitie rezulta ca, intotdeauna, dintr-o coada se extrage elementul cel mai vechi. Se spune ca accesul la o coada este de tip FIFO (First In First Out).
Ca si in cazul stivei, operatiile de baza asupra unei cozi sunt doua: adaugarea unui element in coada si extragerea unui element din coada.
Atat in implementarea statica (programul Static_Coada) cat si in implementarea dinamica (programul Dinamic_Coada), o coada e determinata de:
capul cozii (arata locul de unde se extrage);
coada cozii (arata locul unde se adauga);
lungimea cozii (numarul elementelor din coada).
Grafic, pentru o coada cu lungimea n=4 elementele, cele doua variante de implementare pot arata astfel:
Variante de implementare a cozii: |
|
|
|
a) varianta statica |
|
|
|
b) varianta dinamica |
|
Lista programului Static_Coada (implementarea statica) este prezentata in continuare.
//Static_Coada
# include 'stdio.h'
# include 'conio.h'
const max_aloc=20;
int coada[max_aloc];
char ch;
int n,x,pcap,pcoada;
void InitCoada()
int AdaugaEl(int x)
else
return 0;
int ExtragEl(int x)
void Listare()
getch();
void main(void)
break;
case 'E':
k=ExtragEl(x);
if (k)
else
break;
case 'L':
Listare();
break;
case 'S':
break;
default:
printf('nIntroduceti alta litera!');
getch();
}
clrscr();
}
while (ch!='S');
Lista programului Dinamic_Coada (implementarea dinamica) este prezentata mai jos.
//Dinamic_Coada
# include 'stdio.h'
# include 'conio.h'
# include 'alloc.h'
const max_aloc=50;
struct pstruct
;
typedef struct pstruct PSTRUCT;
PSTRUCT *prim,*ultim,*p;
int x,n;
char ch;
void InitCoada()
int AdaugaEl(int x)
n++;
return 1;
}
else
return 0;
int ExtragEl(int x)
void Listare()
getch();
void main(void)
break;
case 'E':
k=ExtragEl(x);
if (k)
else
break;
case 'L':
Listare();
break;
case 'S':
break;
default:
printf('nIntroduceti alta litera!');
getch();
}
clrscr();
}
while (ch!='S');
|
Nota: Cele doua programe (Static_Coada si Dinamic_Coada) simuleaza operatiile de initializare a unei cozi (Initcoada), adaugarea si extragerea unui element (AdaugaEl, ExtrageEl) precum si operatia de listare elemente (Listare). |
Copyright © 2024 - Toate drepturile rezervate