Table of Contents

Articol 4 - Stive

Obiective

În urma parcurgerii acestui articol studentul va fi capabil să:

Ce este o stivă?

O stivă este o instanță a unui tip de date abstract ce formalizează conceptul de colecţie cu acces restricționat. Restricția respectă regula LIFO (Last In, First Out).

Accesul la elementele stivei se face doar prin vârful acesteia.

Operații:

Cum se implementează?

O structură de date definește un set de operații și funcționalitatea acestora.
Implementarea efectivă a unei structuri de date poate fi realizată în diverse moduri, cât timp funcționalitatea este păstrată.

O stivă poate fi implementată cu ajutorul unui vector sau cu liste înlănțuite. O listă înlănțuită este o structură de date folosită pentru a stoca un set de elemente folosind zone de memorie discontinue.

În cadrul acestui articol, ne vom concentra asupra implementării unei stive cu ajutorul unui vector de stocare.

Implementare cu vector

La nivel de implementare, stiva este reprezentată printr-o clasă ce folosește (pe lângă operațile ce pot fi efectuate asupra ei) un vector de stocare (stackArray) de o dimensiune maximă dată (NMAX) și un indice ce indică vârful stivei(topLevel).

stack.h
#ifndef __STACK__H
#define __STACK__H
 
// Primul argument al template-ului este tipul de date T
// Al doilea argument este dimensiunea maxim a stivei N
template<typename T, int N>
class Stack {
	public:
		// constructor
		Stack();
 
		// destructor
		~Stack();
 
		// operator de adaugare
		void push(T x);
 
		// operatorul de stergere
		T pop();
 
		// operatorul de consultare
		T peek();
 
		// operatorul de verificare dimensiune
		int isEmpty();
 
	private:
		// vectorul de stocare
		T stackArray[N];
 
		// pozitia in vector a varfului stivei
		int topLevel;
};
 
#endif // __STACK__H

Interviu

Această secțiune nu este punctată și încearcă să vă facă o oarecare idee a tipurilor de întrebări pe care le puteți întâlni la un job interview (internship, part-time, full-time, etc.) din materia prezentată în cadrul cursului.

  1. Implementați, folosind un singur vector, 3 stive
  2. Scrieți un program cu ajutorul căruia să sortați o stivă. Nu aveți acces decât la operațiile push(), pop(), top() și isEmpty()
  3. Adăugaţi structurii de stivă o nouă funcţie numită min, funcţie care returnează cel mai mic element. Push, pop şi min trebuie să aibă complexitate O(1)
  4. Descrieți cum este folosită stiva sistemului în cazul transmiterii parametrilor apelului unei funcții

Resurse

[1] C++ Reference

[2] Array Stack Visualization

[3] Linked List Stack Visualziation