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: 576 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++: #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 |