Saturday, April 20, 2019 12:53

Stiva (Stack)

Stiva este o structură de date liniară în care sunt definite trei operații: adăugarea unui element în partea superioară a stivei (Push – împingere), eliminarea unui element din partea superioară a stivei (Pop – scoatere) și inspectarea elementului din partea de sus, fără a fi eliminat (Peek – inspectează). Toate aceste operațiuni sunt foarte rapide – este nevoie de un timp constant pentru a le executa. Stiva nu acceptă operațiunile de căutare și acces prin index. Stiva este o structură de date care are un comportament LIFO (ultimul venit, primul plecat – last in, first out). Se utilizează atunci când trebuie să modelăm un astfel de comportament – de exemplu, dacă trebuie să păstrăm calea către poziția curentă într-o căutare recursivă. Utilizați o stivă atunci când trebuie să implementați comportamentul „last in, first out” (LIFO).

Ca și lista, o stivă are o metodă de a adăuga și a returna elemente, cu o mică diferență de comportament.

Pentru a adăuga o structură de date în stivă, trebuie să apelați metoda Push(), care este echivalentul lui Add() al unei liste. Preluarea unei valori este ușor diferită. Stiva are o metodă numită Pop(), care returnează și elimină ultimul obiect adăugat. Dacă doriți să verificați valoarea de sus a unei stive fără a o elimina, utilizați apelul la metoda Peek().

Există două formate de definire a unei stive în C#:

Diferența dintre ele constă în faptul că structura Stack simplă va funcționa cu obiecte (Object), în timp ce Stack va accepta doar un tip specificat.

Iată codul C# pentru a adăuga și traversa printr-o structură de date Stack:

Dacă executați codul C# de mai sus, veți vedea că lista este returnată în ordinea: „trei”, „doui”, „unu”.

Acestea sunt principalele metode ale unui Stack:

Push() – De obicei, prima acțiune pe care trebuie să o faceți în Stack este să adăugați elemente în ea. Cuvântul Push este un termen informatic care înseamnă „adăugare în partea de sus”.

Pop(), Peek() – Aici folosim Pop și Peek. Când apelați Pop(), elementul din partea superioară a Stack-ului este returnat, iar apoi este eliminat din colecție.

Clear() – este o metodă fără parametri. Șterge conținutul stivei.

Contains() – Căută în stivă un anumit element. Metoda Contains() a Stivei returneaza adevărat (True) dacă elementul este găsit.

Cea mai importantă proprietate a unui Stack este:

Count – indică numărul de elemente dintr-o stivă.

Valoarea null este permisă în stive cu tipuri de referință, cum ar fi string. Puteți și să atribui stivei valoarea null în loc de a apela Clear(). La alocarea la valoarea null, conținutul nu este modificat. În schimb, referința este dezrădăcinată de colectorul de gunoi (garbage collector). Când apelați Pop() sau Peek() pe stivă, execuția va genera o excepție, dacă Stack-ul are zero elemente. Pentru a rezolva această problemă, trebuie să verificați proprietatea Count. Aici vom „prinde” excepția ridicată de această situație (nu am învățat încă despre excepții, considerați-le doar un tip special de erori):

Comments

comments

Tags: ,

Leave a Reply