3.1 KiB
title | localeTitle |
---|---|
Stacks | Pilhas |
Pilhas
Stacks é uma Estrutura de Dados First In Last Out (FILO). É uma estrutura de dados linear.
Você pode imaginar uma pilha como as placas de maneira foram organizadas em restaurante buffet. Você só pode escolher a placa no topo, caso contrário a pilha entrará em colapso. Geralmente, o último item a ser inserido será removido primeiro.
Algumas operações básicas da pilha são:
- Push - Insere um item no topo da pilha.
- Pop - Remove um item no topo da pilha.
- isEmpty - verifica se a pilha está vazia ou não
- Tamanho - Retorna o número de itens na pilha (Todas as operações podem ser feitas no tempo O (1))
A implementação de uma pilha é possível usando arrays ou listas vinculadas. A seguir, uma implementação de matriz simples da estrutura de dados da pilha com suas operações mais comuns.
//Stack implementation using array in C++
//You can also include<stack> and then use the C++ STL Library stack class.
#include <bits/stdc++.h>
using namespace std;
class Stack {
int t;
int arr[MaxN];
public:
Stack() {
t = 0;
}
int size() {
return t;
}
bool isEmpty() {
return t < 1;
}
int top() {
return arr[t];
}
void push(int x) {
if (++t >= MaxN) {
cout << "Stack is full" << '\n';
return;
}
arr[t] = x;
}
void pop() {
arr[t--] = 0;
}
};
int main() {
Stack st;
st.push(4);
st.push(3);
st.push(5);
while (!st.isEmpty()) {
cout << st.size() << ' ' << st.top() << '\n';
st.pop();
}
return 0;
}
Usando matrizes como pilhas
Em algumas linguagens de programação, uma matriz possui a funcionalidade de pilha, permitindo que o desenvolvedor realize operações push e pop sem a necessidade de uma estrutura de dados de pilha personalizada.
Por exemplo, uma matriz em JavaScript possui métodos push e pop , permitindo implementar facilmente a funcionalidade de pilha em um aplicativo.
stack = [];
let i = 0;
while(i < 5)
stack.push(i++);
while(stack.length) {
stack.pop();
}
Uma lista no Python também pode executar a funcionalidade de pilha em um aplicativo. Em vez de push , pode-se usar o método append .
stack = []
for i in range(5):
stack.append(i)
while len(stack):
stack.pop()
Aplicações
- Transforme a recursão em loop.
- Recursos de refazer desfazer.
- Solucionador de Sudoku
- Primeira pesquisa de profundidade.
- Travessias de árvores
- Expressão Infix -> Expressão Prefixo / Postfix
- Parênteses válidos