100 likes | 369 Views
STRUCTURA DE TIP STIVA. DEFINITIE SI IMPLEMENTARE. CONTINUT. DEFINITIE DECLARAREA STIVEI PRELUCRAREA STIVEI - Testare - Initializare - Adaugarea unui nod - Eliminarea unui nod. DEFINITIE.
E N D
STRUCTURA DE TIP STIVA DEFINITIE SI IMPLEMENTARE
CONTINUT • DEFINITIE • DECLARAREA STIVEI • PRELUCRAREA STIVEI - Testare - Initializare -Adaugareaunui nod - Eliminareaunui nod
DEFINITIE • Def:Stivaeste o listarestrictiva in care operatiile de introduceresiextragere se efectueazape la o singuraextremitate. • Proprietati: -celedouaextremitati ale stivei se numescbazasivarf. - accesul la nodurilestiveiestepermisnumaiprinextremitateavarf. - stiva se mainumestesistructura de tip LIFO (Last In First Out) vf baza
IMPLEMENTARE Implementareastivei se poate face: • cu alocareinlantuita. – la fel ca a uneilisteliniaredar se vorfolosinumaiadaugarea in fataprimului nod sieliminareaprimului nod. • cu alocaresecventiala– este un mecanismmultmaisimplupentruadaugareasieliminareanodurilor. Concluzie: ceamaisimplaimplementare a stiveloresteceasecventiala cu ajutorulunui vector.
DECLARAREA STIVEI Sintaxa: const unsigned NMAX=100; typedef<tip_data> nod; nod stiva[NMAX+1], val; unsigned vf,baza; unde: tip_data = orice tip al limbajului val - valoareaintrodusa in nod vf - varfulstivei Prelucrarea se face de la varfsprebaza. Accesul la informatia din varfulstivei se face cu stiva[vf]
PRELUCRAREA STIVEI 1.Testarea stivei a.stivavida: este_vida = vf == NULL; undeeste_vida e o variabila cu valoarea 1 dacastiva e vidasi 0 in cazcontrar. b.stivaplina: este_plina = vf == NMAX; undeeste_plinae o variabila cu valoarea 1 dacastiva e plinasi 0 in cazcontrar. 2.Initializarea stivei In aceastasecventa se creeazastivavida: vf = baza = NULL;
PRELUCRAREA STIVEI 3.Adaugarea unui nod in stiva: if (! este_plina) {if (este_vida) baza = 1; vf++; stiva [vf] = val;} Exemplu: Pentru o stiva in care se adauga 3 caracterea,b,coperatiile de adaugare se executaastfel:
PRELUCRAREA STIVEI 4.Eliminarea unui nod din stiva: if (! este_vida) {val = stiva[vf]; vf --;} if(este_vida) vf = baza = NULL; Exemplu: Eliminarea a douacaractere din stiva se executaastfel: