RSS

Stiva

14 Nov

Definitie

Stiva este o structura de date, cu valori de acelasi tip, in care adaugarea (operatia PUSH) si extragerea de elemente (operatia POP) se realizeaza la varf.

Corelare

Cu termenul STIVA ne-am mai intalnit la expresia “stiva de lemne”, insa imaginea sugerata este una lipsita de ordine. Un cuvant care explica mai bine structura stivei, este cuvantul TEANC. Apare clar ideea ca elementele se suprapun unul altuia, in ordine si adaugarea si extragerea se realizeaza la varf.

Similar, putem vorbi de o stiva de tricouri. Stapana casei pune tricourile noi in varful teancului iar noi ne servim, de asemenea, din varf.

Un exemplu de folosire a ideii de stiva este construirea oglinditului unui numar natural. Fie n un numar natural. Sa se creeze numarul n2, numarul oglinda al lui n. (n=1972=> n2=2791). Ideea este de a lua cate o cifra de la sfarsitul lui n (POP) si a o adauga la sfarsitul lui n2 (PUSH). Observam ca atat n , cat si n2, se comporta ca si stive.

n2=0;

do {cif=n%10; //elementul din varful stivei N

    n2=n2*10+cif; // PUSH in N2

   n=n/10; //POP din N

} while (n!=0)  //verific daca stiva  N este vida

cout<<n2;

Implementare

Din punct de vedere al implementarii, pentru reprezentarea in memorie a unei stive, putem folosi vectorul.

Declararea unei stive vide:

int stiva[100], ns=0;   //ns=numarul de elemente din stiva; initial stiva este vida

Operatia PUSH: cresc numarul de elemente; folosesc prima pozitie neocupata;

ns++;cin>>stiva[ns];

Operatia POP: daca exista elemente in stiva, elimin elementul din varf (practic  nu sterg elementul, ci doar il ignor)

if (ns>0) ns–;

Concluzie

La o stiva operatiile de adaugare (PUSH) si extragere (POP) se realizeaza la varf. In literatura de specialitate gasiti afirmatia ca o stiva este de tip LIFO (last input, first output = ultimul venit este primul plecat; … asemanator cu  politica de angajare a unei firme/institutii )

 

 

Tags:

One response to “Stiva

  1. Zalincu_Daniel

    21/05/2015 at 18:08

    Buna ziua!Am dificultati in crearea acestui program !Ma puteti ajuta?Multumesc anticipat!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~*Să se realizeze o clasă “Stivă” care implementează operații pentru o stivă reprezentată ca vector(număr natural scris în baza b (b<=10)).
    Clasa conține:
    1.Date membre private,numarul de elemente si vectorul
    2.Metode publice
    3.Constructor implicit,de copiere si destructor
    4.Crearea stivei ,formata din toate cifrele citite din fisierul stiva.in(baza b se va citi din fisier)
    5.Afisarea continutului stivei in fisierul stiva.out
    6.Extragerea unui nod din stiva creata
    7.Adaugarea unui nod la stiva
    8.Conversia numarului memorat din baza b in baza 10
    9.Supraincarcarea operatorului ”+” pentru adunarea a 2 numere in baza b numerele fiind memorate in 2 stive
    *Specific:codul trebuie sa fie C++.:/

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: