Publicitate

O stiva este un Tip de Date Abstract (ADT), frecvent folosit în cele mai multe limbaje de programare. Se numește stivă, deoarece se comportă ca o stivă din lumea reală – de exemplu-un pachet de cărți sau o grămadă de plăci etc.

o stivă din lumea reală permite operații doar la un capăt. De exemplu, putem plasa sau elimina o carte sau o placă din partea de sus a stivei numai., De asemenea, Stack ADT permite toate operațiunile de date la un singur capăt. La un moment dat, putem accesa doar elementul de sus al unei stive.această caracteristică face structura de date LIFO. LIFO standuri pentru ultimul-in-primul-out. Aici, elementul care este plasat (inserat sau adăugat) ultimul, este accesat mai întâi. În terminologia stivă, operația de inserare se numește operație de împingere, iar operația de îndepărtare se numește operație POP.,

reprezentare stivă

următoarea diagramă descrie o stivă și operațiunile sale −

o stivă poate fi pusă în aplicare prin intermediul matrice, structura, Pointer, și lista legată. Stiva poate fi o dimensiune fixă sau poate avea un sentiment de redimensionare dinamică. Aici, vom implementa stiva folosind matrice, ceea ce o face o implementare de stivă cu dimensiuni fixe.

operații de bază

operațiile stivei pot implica inițializarea stivei, utilizarea acesteia și apoi dezinițializarea acesteia., În afară de aceste umpluturi de bază, o stivă este utilizată pentru următoarele două operații primare −

  • push() − împingerea (stocarea) unui element pe stivă.

  • pop () – eliminarea (accesarea) unui element din stivă.

când datele sunt împinse pe stivă.pentru a utiliza eficient o stivă, trebuie să verificăm și starea stivei. În același scop, următoarele funcționalități sunt adăugate la stive –

  • peek−) – obțineți elementul de date de top al stivei, fără a-l elimina.

  • isFull () – verificați dacă stiva este plină.,

  • isEmpty () – verificați dacă stiva este goală.

în orice moment, vom menține un pointer la ultimele date împinse pe stivă. Deoarece acest pointer reprezintă întotdeauna partea de sus a stivei, prin urmare, numit top. Indicatorul de sus oferă o valoare de top a stivei fără a o elimina efectiv., suport stiva funcții −

peek()

Algoritm de peek() funcția −

begin procedure peek return stackend procedure

punerea în Aplicare a peek() funcția în limbajul de programare C −

Exemplu

int peek() { return stack;}

isfull()

Algoritm de isfull() funcția −

begin procedure isfull if top equals to MAXSIZE return true else return false endif end procedure

punerea în Aplicare a isfull() funcția în limbajul de programare C −

Exemplu

bool isfull() { if(top == MAXSIZE) return true; else return false;}

isempty()

Algoritm de isempty() funcția −

begin procedure isempty if top less than 1 return true else return false endif end procedure

punerea în Aplicare a isempty() funcția în limbajul de programare C este ușor diferită., Inițializăm top la -1, deoarece indicele din matrice începe de la 0. Deci, verificăm dacă partea de sus este sub zero sau -1 pentru a determina dacă stiva este goală. Iată codul –

exemplu

bool isempty() { if(top == -1) return true; else return false;}

operație Push

procesul de a pune un nou element de date pe stivă este cunoscut ca o operație Push. Operația Push implică o serie de pași −

  • Pasul 1 − verifică dacă stiva este plină.pasul 2-În cazul în care stiva este plin, produce o eroare și ieșire.

  • Pasul 3-În cazul în care stiva nu este plin, incremente de sus pentru a indica următorul spațiu gol.,pasul 4-adaugă element de date la locația stivă, în cazul în care partea de sus este îndreptat.

  • Pasul 5-returnează succesul.

Dacă lista legată este utilizată pentru a implementa stiva, atunci la Pasul 3, trebuie să alocăm spațiu dinamic.un algoritm simplu pentru operarea Push poate fi derivat după cum urmează −

begin procedure push: stack, data if stack is full return null endif top ← top + 1 stack ← dataend procedure

implementarea acestui algoritm în C, este foarte ușoară., Vedeți următorul cod –

exemplu

void push(int data) { if(!isFull()) { top = top + 1; stack = data; } else { printf("Could not insert data, Stack is full.\n"); }}

operație Pop

accesarea conținutului în timp ce îl eliminați din stivă, este cunoscută ca operație Pop. Într-o implementare matrice de pop() operație, elementul de date nu este de fapt eliminat, în schimb top este decrementat într-o poziție inferioară în stivă pentru a indica valoarea următoare. Dar, în punerea în aplicare a listei legate, pop() elimină de fapt, elementul de date și deallocates spațiu de memorie.

o operație Pop poate implica următorii pași –

  • Pasul 1-verifică dacă stiva este goală.,pasul 2-În cazul în care stiva este gol, produce o eroare și ieșire.Pasul 3-dacă stiva nu este goală, accesează elementul de date la care este îndreptată partea de sus.

  • Pasul 4-scade valoarea top cu 1.

  • Pasul 5-returnează succesul.,

Algorithm for Pop Operation

A simple algorithm for Pop operation can be derived as follows −

begin procedure pop: stack if stack is empty return null endif data ← stack top ← top - 1 return dataend procedure

Implementation of this algorithm in C, is as follows −

Example

int pop(int data) { if(!isempty()) { data = stack; top = top - 1; return data; } else { printf("Could not retrieve data, Stack is empty.\n"); }}

For a complete stack program in C programming language, please click here.

Advertisements