90 likes | 231 Views
ALGORITMI PENTRU PRELUCRAREA COZILOR. CONTINUT. NOTIUNI INTRODUCTIVE METODE DE IMPLEMENTARE DECLARAREA UNEI COZI PRELUCRAREA COZII - Testare - Initializarea - Adaugarea unui nod - Eliminarea unui nod. NOTIUNI INTRODUCTIVE.
E N D
CONTINUT • NOTIUNI INTRODUCTIVE • METODE DE IMPLEMENTARE • DECLARAREA UNEI COZI • PRELUCRAREA COZII - Testare - Initializarea - Adaugareaunui nod - Eliminareaunui nod
NOTIUNI INTRODUCTIVE • Def: Coadareprezinta o listarestrictiva in care operatiile de introducere se facpe la o extremitateiarextragerilepe la cealaltaextremitate. • Celedouaextremitati se numescvarf (nodul prim) sibaza (nodulultim). • Este o structura de tip FIFO (First In First Out), astfel: - adaugarea de noduri se realizeazaprinnodulultim - extragereaunui nod estepermisanumaiprinextremitatea prim.
METODE DE IMPLEMENTARE Implementareacozii se poate face: - cu alocareinlantuita: la fel ca a uneilisteliniare cu deosebirea ca pentruadaugareaunui nod se poatefolosinumaialgoritmulpentruadaugareadupaultimul nod iarpentruextrageredoaralgoritmulpentrueliminareaprimului nod. - cu alocaresecventiala: este un mecanismmultmaisimplude prelucrare. In continuare se vautilizaalocareasecventialapentruimplementareacozii.
DECLARAREA UNEI COZI Pentruimplementare se vorfolosiurmatoarele date sistructuri de date: const unsigned NMAX=100; typedef<tip_data> nod; nod coada[NMAX+1], val; unsigned prim,ultim; unde: tip_data – orice tip al limbajului prim, ultim – celedouaextremitati val – valoareaintrodusa in nod Prelucareauneicozi se realizeaza de la nodul prim sprenodulultim. Accesul la nodul prim se face cu coada[prim].
Exemplu Operatii de adaugaresiextragereintr-o coada: Adaugare: Extragere Obs: in urmaoperatiilor de adaugaresiextragerevorrezultaspatiineocupate in coada => coadavaajunge la capatulspatiuluialocat Solutia:implementare ca o listacirculara.
PRELUCRAREA COZII Pentruimplementare se vafolosi o variabilasuplimentara k care vanumaranodurilecozii. 1.Testarea cozii a.coadavida: inteste_vida () {returnk==0;} undeeste_vida e o functiecu valoarea 1 dacacoadae vidasi 0 in cazcontrar. b.coadaplina: inteste_plina () {return k == NMAX;} undeeste_plina e o functiecu valoarea 1 dacacoadae plinasi 0 in cazcontrar. 2.Initializarea cozii: In aceastasecventa se creeazacoadavida: voidinit (unsigned &prim, unsigned &ultim) {prim=ultim= NULL; k=0:}
PRELUCRAREA COZII 3.Adaugarea unui nod: voidadaugare(unsigned &ultim, nod val) { if (! este_plina()) { if (ultim == NMAX) ultim = 1; elseultim ++; coada [ultim] = val; k ++;}} 4.Eliminarea unui nod: voideliminare( unsigned &prim) { if(! este_vida()) { val = coada [prim]; if (prim==NMAX) prim=1; else prim++; k--;}