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 singularmente encadeada) - Desafio de Programação Resolvido em CQuantidade de visualizações: 61 vezes |
Pergunta/Tarefa: A Pilha é uma estrutura de dados do tipo LIFO - Last-In, First-Out (Último a entrar, primeiro a sair). Neste tipo de estrutura, o último elemento a ser inserido é o primeiro a ser removido. Veja a imagem a seguir: ![]() Escreva um programa C para criar uma pilha a partir de uma lista encadeada dinâmica, ou seja, uma lista singularmente ligada. Note que não é permitido o uso de vetores (arrays) e sim a alocação dinâmica de memória. Sua saída deverá ser parecida com: Informe o valor a ser empilhado: 8 O no 8 foi empilhado com sucesso. Informe o valor a ser empilhado: 2 O no 2 foi empilhado com sucesso. Informe o valor a ser empilhado: 5 O no 5 foi empilhado com sucesso. Informe o valor a ser empilhado: 1 O no 1 foi empilhado com sucesso. Informe o valor a ser empilhado: 4 O no 4 foi empilhado com sucesso. O no desempilhado foi: 4 O no desempilhado foi: 1 O no desempilhado foi: 5 O no desempilhado foi: 2 O no desempilhado foi: 8 Veja a resolução comentada deste exercício usando C: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> // Estrutura No (nó) usada para representar os elementos // da pilha struct No { int valor; // valor do nó struct No* proximo; // aponta para o próximo nó }; // Estrutura Pilha para gerenciar a pilha struct Pilha { struct No* topo; // aponta para o topo da pilha }; // Função usada para criar e retornar um novo nó // com o valor informado struct No* criar_novo_no(int valor) { // reserva memória para o novo nó struct No* no = (struct No*) malloc(sizeof(struct No)); // define o valor do nó no->valor = valor; // este novo nó não aponta para nenhum outro no->proximo = NULL; // e retornamos o nó recém-criado return no; } // função usada para criar uma nova pilha e inicializá-la struct Pilha* criar_pilha() { // reservamos espaço para a estrutura Pilha struct Pilha* pilha = (struct Pilha*) malloc(sizeof(struct Pilha)); // definimos que a pilha está vazia pilha->topo = NULL; // e retornamos a pilha recém-criada return pilha; } // função usada para verificar se a pilha está vazia int vazia(struct Pilha* pilha) { // retorna 1 se a pilha estiver vazia e 0 em caso contrário return !pilha->topo; } // função usada para empilhar novos valores na pilha void empilhar(struct Pilha* pilha, int valor) { // criamos um novo nó ...... |
![]() |
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 |