O que é std :: stack?
Uma pilha é uma estrutura de dados que opera com base na técnica LIFO (Last In First Out). O std :: stack permite que elementos sejam adicionados e removidos de apenas uma extremidade.
A classe std :: stack é um adaptador de contêiner. Objetos de contêiner contêm dados de um tipo de dados semelhante. Você pode criar uma pilha a partir de vários contêineres de sequência. Se nenhum contêiner for fornecido, o deque containe será usado por padrão. Adaptadores de contêiner não suportam iteradores, portanto, não podem ser usados para manipular dados.
Neste tutorial C ++, você aprenderá
- O que é std :: stack?
- Sintaxe de pilha
- Tipos de sócios
- Operações na pilha
- Implementação de pilha
- pressione () e pop ()
- vazio (), tamanho (), parte superior ()
- emplace () e swap ()
- Empilhar em STL
Sintaxe de pilha
Para criar uma pilha, devemos incluir o arquivo de cabeçalho
template> class stack;
- Type - é o tipo de elemento contido em std :: stack. Pode ser qualquer tipo C ++ válido ou até mesmo um tipo definido pelo usuário.
- Container - é o tipo de objeto container subjacente.
Tipos de sócios
Aqui estão os tipos de membros da pilha:
- value_type- O primeiro parâmetro do template, T. Ele denota os tipos de elemento.
- container_type- O segundo parâmetro de modelo, Container. Ele denota o tipo de contêiner subjacente.
- size_type- Tipo integral sem sinal.
Operações na pilha
Uma pilha C ++ suporta as seguintes operações básicas:
- push - adiciona / empurra um item na pilha.
- pop - remove / abre um item da pilha.
- peek - Retorna o item do topo da pilha sem removê-lo.
- isFull - Verifica se uma pilha está cheia.
- isEmpty - Verifica se uma pilha está vazia.
Implementação de pilha
Etapa 1) Inicialmente, temos uma pilha vazia. O topo de uma pilha vazia é definido como -1.
Etapa 2) Em seguida, colocamos o elemento 5 na pilha. O topo da pilha apontará para o elemento 5.
Etapa 3) Em seguida, colocamos o elemento 50 na pilha. O topo da pilha muda e aponta para o elemento 50.
Etapa 4) Em seguida, executamos uma operação pop, removendo o elemento superior da pilha. O elemento 50 é retirado da pilha. O topo da pilha agora aponta para o elemento 5.
pressione () e pop ()
As funções stack :: push () adicionam um novo item ao topo da pilha. O tamanho da pilha é aumentado em 1 após a inserção. A função assume esta sintaxe:
stack.push(value)
O valor é o item a ser inserido na pilha.
A função stack :: pop () remove o elemento do topo da pilha. Este é o item mais novo da pilha. O tamanho da pilha é reduzido em 1 após a remoção. Aqui está a sintaxe da função:
stack.pop()
A função não tem parâmetros.
Exemplo 1:
#include#include using namespace std;int main() {stack st;st.push(10);st.push(20);st.push(30);st.push(40);st.pop();st.pop();while (!st.empty()) {cout << ' ' << st.top();st.pop();}}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho da pilha em nosso código para usar suas funções.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). A lógica do programa deve ser adicionada a esta função.
- Crie uma pilha st para armazenar valores inteiros.
- Use a função push () para inserir o valor 10 na pilha.
- Use a função push () para inserir o valor 20 na pilha.
- Use a função push () para inserir o valor 30 na pilha.
- Use a função push () para inserir o valor 40 na pilha.
- Use a função pop () para remover o elemento superior da pilha, ou seja, 40. O elemento superior agora se torna 30.
- Use a função pop () para remover o elemento superior da pilha, ou seja, 30. O elemento superior agora se torna 20.
- Use um loop while e a função empty () para verificar se a pilha NÃO está vazia. O ! é o operador NOT.
- Imprimindo o conteúdo atual da pilha no console.
- Chame a função pop () na pilha.
- Fim do corpo do loop while.
- Fim do corpo da função main ().
vazio (), tamanho (), parte superior ()
As pilhas têm funções integradas que você pode usar para brincar com a pilha e seus valores. Esses incluem:
- empty () - verifica se uma pilha está vazia ou não.
- size () - retorna o tamanho da pilha, ou seja, o número de elementos em uma pilha.
- top () - acessa o elemento da pilha no topo.
Exemplo 2:
#include#include using namespace std;void createStack(stack mystack){stack ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack st;st.push(32);st.push(21);st.push(39);st.push(89);st.push(25);cout << "The stack st is: ";createStack(st);cout << "\n st.size() : " << st.size();cout << "\n st.top() : " << st.top();cout << "\n st.pop() : ";st.pop();createStack(st);return 0;}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho da pilha em nosso código para usar suas funções.
- Inclua o namespace std em nosso programa para usar suas classes sem chamá-lo.
- Crie a função createStack que podemos usar para criar a pilha mystack. A pilha conterá um conjunto de inteiros.
- O início do corpo da função createStack.
- Crie uma instância do tipo de dados mystack e dê a ela o nome ms.
- Use o loop while e a função empty () para verificar se a pilha está vazia.
- O início do corpo do loop while.
- Use a função top () armazenada no topo da pilha. O caractere \ t criará uma nova guia.
- Use a função pop () para excluir o elemento do topo da pilha.
- Fim do corpo do loop while.
- Imprima uma linha em branco no console.
- Fim do corpo da função createStack.
- Chame a função main (). A lógica do programa deve ser adicionada ao corpo da função main ().
- O início do corpo da função main ().
- Crie um objeto de pilha st.
- Use a função push () para inserir o elemento 32 na pilha.
- Use a função push () para inserir o elemento 21 na pilha.
- Use a função push () para inserir o elemento 39 na pilha.
- Use a função push () para inserir o elemento 89 na pilha.
- Use a função push () para inserir o elemento 25 na pilha.
- Imprima algum texto no console.
- Chame a função createStack para executar as operações de inserção acima na pilha.
- Imprima o tamanho da pilha no console ao lado de outro texto.
- Imprima o elemento no topo da pilha no console.
- Imprima algum texto no console.
- Exclua o elemento do topo da pilha. Em seguida, ele retornará os elementos restantes na pilha.
- Chame a função createStack para executar as operações acima.
- O programa deve retornar um valor após a conclusão bem-sucedida.
- Fim do corpo da função main ().
emplace () e swap ()
Estas são outras funções de pilha embutidas:
- emplace () - constrói e depois insere um novo elemento no topo da pilha.
- swap () - troca o conteúdo da pilha com o conteúdo de outra pilha.
Exemplo 3:
#include#include #include using namespace std;int main() {stack st1;stack st2;st1.emplace(12);st1.emplace(19);st2.emplace(20);st2.emplace(23);st1.swap(st2);cout << "st1 = ";while (!st1.empty()) {cout << st1.top() << " ";st1.pop();}cout << endl << "st2 = ";while (!st2.empty()) {cout << st2.top() << " ";st2.pop();}}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho da pilha em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho cstdlib em nosso código para usar suas funções.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). A lógica do programa será adicionada ao corpo desta função.
- Declare uma pilha chamada st1 para armazenar valores inteiros.
- Declare uma pilha chamada st2 para armazenar valores inteiros.
- Use a função emplace () para inserir o inteiro 12 na pilha chamada st1.
- Use a função emplace () para inserir o inteiro 19 na pilha chamada st1.
- Use a função emplace () para inserir o inteiro 20 na pilha chamada st2.
- Use a função emplace () para inserir o inteiro 23 na pilha chamada st2.
- Use a função swap () para trocar o conteúdo das duas pilhas, st1 e st2. O conteúdo da pilha st1 deve ser movido para a pilha st2. O conteúdo da pilha st2 deve ser movido para a pilha st1.
- Imprima algum texto no console.
- Use a instrução while e a função empty () para verificar se a pilha st1 não está vazia.
- Imprima o conteúdo da pilha st1 no console. O "" adiciona espaço entre os elementos da pilha ao imprimi-los no console.
- Execute a função pop () na pilha st1 para remover o elemento superior.
- Fim do corpo da instrução while.
- Imprima algum texto no console. O endl é uma palavra-chave C ++ para linha final. Ele move o cursor do mouse para a próxima linha para começar a imprimir a partir daí.
- Use a instrução while e a função empty () para verificar se a pilha st2 não está vazia.
- Imprima o conteúdo da pilha st2 no console. O "" adiciona espaço entre os elementos da pilha ao imprimi-los no console.
- Execute a função pop () na pilha st2 para remover o elemento superior.
- Fim do corpo da instrução while.
- Fim do corpo da função main ().
Empilhar em STL
A STL (Biblioteca de Modelos Padrão) vem com classes de modelos que fornecem estruturas de dados C ++ comuns. Portanto, uma pilha também pode ser implementada em STL. Simplesmente incluímos essa biblioteca em nosso código e a usamos para definir uma pilha.
stackst;
A sintaxe acima declara uma pilha st para elementos do tipo de dados T.
Exemplo 3:
#include#include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho da pilha em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho cstdlib em nosso código para usar suas funções.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). A lógica do programa deve ser adicionada ao corpo desta função.
- Declare uma pilha st para armazenar dados inteiros.
- Adicione o elemento 12 à pilha.
- Adicione o elemento 19 à pilha.
- Adicione o elemento 20 à pilha.
- Imprima o elemento no topo da pilha no console.
- Imprima o tamanho da pilha no console.
- Fim do corpo da função main ().
Resumo:
- Uma pilha é uma estrutura de dados que opera com base na técnica LIFO (Last In first Out).
- O std :: stack permite apenas que itens sejam adicionados e removidos de uma extremidade.
- A classe std :: stack é um adaptador de contêiner, contendo itens de um tipo de dados semelhante.
- Uma pilha pode ser criada a partir de vários contêineres de sequência.
- Se você não fornecer um contêiner, o contêiner deque será usado por padrão.
- A função push () serve para inserir itens na pilha.
- A função pop () serve para remover o item superior da etapa.
- A função empty () serve para verificar se uma pilha está vazia ou não.