Table of Contents

Tutorial 4.1 - std::stack

Obiective

Ne dorim:

std::stack

În acest tutorial vom folosi clasa std::stack din STL. Pentru mai multe detalii, vă sugerăm să citiți documentația oficială (stack).

Atenție! Este nevoie să includem biblioteca stack.

#include <stack> // std::stack

Clasa std::stack oferă toate funcționalitățile uzuale pentru o stivă. Menționăm că nu există o implementare unică, astfel încât apar mici diferențe față de implementările sugerate în articol:

În continuare vom prezenta un exemplu inserare de elemente într-o stivă.

int n; // numarul de elemente din stiva
int x; // variabila temporara
std::stack<int> st; // stiva folosita
 
// citire elemente si adaugare in stiva
std::cout << "n = ";
std::cin >> n;
for (int i = 0; i < n; ++i) 
{
	// citeste un alt element
	std::cout << "x = ";
	std::cin >> x; 
 
	// adauga in varful stivei
	st.push(x); 
 
	// afisare statistici
	std::cout << "top = " << st.top() << "; size = " << st.size() << "\n";
}

Având la dispoziție o stivă cu elemente, putem sa extragem element cu element și să le prelucrăm (afișare).

// extrage elementele din stiva
// cat timp stiva contine cel putin element, extrage elementul din varf
std::cout << "Extrag: ";
while (!st.empty()) 
{
	x = st.top(); // extrage elementul din varf
	st.pop(); // elimina elementul din varf
 
	//afisare
	std::cout << x << " "; 
}
std::cout << "\n";
 
// verifica daca stiva mai contine elemente
std::cout << (st.empty() ? "Stiva goala" : "Stiva contine elemente") << "\n";

Compilare și testare

g++ main.cpp -o main

Exemple:

./main
n = 5
x = -1
top = -1; size = 1
x = 2
top = 2; size = 2
x = -3
top = -3; size = 3
x = 4
top = 4; size = 4
x = -5
top = -5; size = 5
Extrag: -5 4 -3 2 -1 
Stiva goala