Você está aqui: C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Pilhas |
Escreva um programa C++ para criar uma Pilha usando uma Lista Ligada (Lista Encadeada Simples), com as operações de empilhar(), desempilhar() e exibir_nos() - Desafio de Programação Resolvido em C++Quantidade de visualizações: 656 vezes |
|
Pergunta/Tarefa: Escreva um programa C++ para criar uma Pilha usando uma Lista Ligada (Lista Encadeada Simples), com as operações de empilhar(), desempilhar() e exibir_nos(). Seu programa deverá usar programação orientada a objetos, ou seja, uma classe No para representar os nós individuais da pilha e uma classe Pilha para o gerenciamento dos nós. Sua saída deverá ser parecida com: Elementos na pilha: 3 8 11 O elemento removido foi: 3 Elementos na pilha: 8 11 Veja a resolução comentada deste exercício em C++: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <iostream>
using namespace std;
// definição da classe No, que representa os nós da
// lista ligada
class No {
public:
int valor; // valor do nó
No* proximo; // próximo elemento da lista ligada
};
// definição da classe Pilha e suas operações
class Pilha {
private:
No* topo; // aponta para o topo da pilha
public:
// construtor da classe Pilha
Pilha() {
// ajusta o topo para NULL; pilha vazia
topo = NULL;
}
// função para empilhar um novo elemento na pilha
void empilhar(int valor) {
// vamos criar um novo nó
No* novo_no = new No();
// ajustamos o valor do novo nó
novo_no->valor = valor;
// o próximo do novo nó aponta para quem está no topo
novo_no->proximo = topo;
// e a variável topo aponta para o novo nó
topo = novo_no;
}
// função para desempilhar um nó da pilha
No* desempilhar() {
// a pilha está vazia?
if (topo == NULL) {
cout << "\nPilha vazia\n" << endl;
return NULL;
}
// criamos um nó temporário e o apontamos para o
// topo da pilha
No* temp = topo;
// agora o topo aponta para o seu próximo
topo = topo->proximo;
// criamos o nó a ser devolvido pela função
No* removido = new No();
removido->valor = temp->valor;
// e deletamos o nó apontado pelo temporário
delete temp;
// e retornamos o nó removido
return removido;
}
// função usada para exibir os nós da pilha
void exibir_nos() {
// a pilha está vazia?
if (topo == NULL) {
cout << "\nPilha vazia\n" << endl;
return;
}
// nó temporário que aponta para o topo da pilha
No* temp = topo;
cout << "Elementos na pilha: ";
// enquanto temp for diferente de vazio
while (temp != NULL) {
cout << temp->valor << " ";
// pula para o próximo elemento
temp = temp->proximo;
}
}
};
// função principal do programa
int main(int argc, char *argv[]){
// vamos criar uma nova pilha
Pilha pilha;
// vamos empilhar 3 elementos
pilha.empilhar(11);
pilha.empilhar(8);
pilha.empilhar(3);
// vamos exibir os nós na pilha
pilha.exibir_nos();
// vamos desempilhar um elemento da pilha
No* removido = pilha.desempilhar();
if(removido != NULL){
cout << "\nO elemento removido foi: " << removido->valor << endl;
}
// vamos exibir os nós na pilha novamente
pilha.exibir_nos();
cout << "\n" << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
|
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






