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: 503 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; } |
![]() |
C++ ::: Dicas & Truques ::: Strings e Caracteres |
Apostila C++ - Como retornar o tamanho de uma string em C++ usando a função length() da classe StringQuantidade de visualizações: 24727 vezes |
Nesta dica eu mostro como podemos usar a função length() da classe String da linguagem C++ para obter a quantidade de caracteres em uma palavra, frase ou texto. Esta função é definida na classe string da seguinte forma:size_t length() const; ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]) { string str = "C++"; size_t tamanho = str.length(); cout << "Esta string contém " << tamanho << " caracteres.\n\n"; system("PAUSE"); // pausa o programa return 0; } Ao executar este código C++ nós teremos o seguinte resultado: Esta string contém 3 caracteres. |
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Como criar diretórios em C++ usando a função mkdir()Quantidade de visualizações: 10367 vezes |
Em algumas situações nossos códigos C++ precisam criar diretórios. Isso pode ser feito com o auxílio da função mkdir(), disponível no header direct.h (trazido da linguagem C). Veja a assinatura desta função:int _mkdir(const char *pathname); Veja um trecho de código C++ no qual criamos um diretório no mesmo diretório do executável. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <direct.h> using namespace std; int main(int argc, char *argv[]){ // vamos criar o diretório char diretorio[] = "estudos"; // vamos testar se houve erro na criação do diretório if(mkdir(diretorio) == -1){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Diretório criado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } É possível usar a versão Unicode de mkdir(), ou _mkdir(). O método _wmkdir(), também presente em direct.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <direct.h> using namespace std; int main(int argc, char *argv[]){ // vamos criar o diretório wchar_t diretorio[] = L"C:\\Dev-Cpp\\estudos"; // vamos testar se houve erro na criação do diretório if(_wmkdir(diretorio) == -1){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Diretório criado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Note que agora eu troquei o tipo char por wchar_t e usei o sinalizado L antes da atribuição da string. |
C++ ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o comprimento da hipotenusa em C++ dadas as medidas do cateto oposto e do cateto adjascenteQuantidade de visualizações: 2117 vezes |
Nesta dica mostrarei como é possível usar a linguagem C++ para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:![]() Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras): \[c^2 = a^2 + b^2\] Tudo que temos a fazer a converter esta fórmula para código C++. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <iostream> #include <math.h> #include <cstdlib> using namespace std; int main(int argc, char *argv[]){ float a = 20; // medida do cateto oposto float b = 30; // medida do cateto adjascente // agora vamos calcular o comprimento da hipotenusa float c = sqrt(pow(a, 2) + pow(b, 2)); // e mostramos o resultado cout << "O comprimento da hipotenusa é: " << c << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: O comprimento da hipotenusa é: 36.0555 Como podemos ver, o resultado retornado com o código C++ confere com os valores da imagem apresentada. |
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
Códigos Fonte |
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
![]() Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |