Você está aqui: C ::: Estruturas de Dados ::: Pilhas |
Como criar uma pilha em C usando um vetor (array) - Estruturas de Dados em CQuantidade de visualizações: 1039 vezes |
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:![]() Embora seja mais comum a criação de uma estrutura de dados do tipo Pilha de forma dinâmica (usando ponteiros e referências), nesta dica eu mostrarei como podemos criá-la em C usando um array, ou seja, um vetor. No exemplo eu usei inteiros, mas você pode modificar para o tipo de dados que você achar mais adequado. Veja o código completo para o programa C que cria uma pilha usando um vetor de ints. Veja que o tamanho do vetor é informado com um #define. Note também a lógica empregada na construção das funções empilhar(), desempilhar() e imprimir_pilha(): #include <stdio.h> #include <stdlib.h> #include <locale.h> // tamanho máximo da pilha #define TAM_MAX 5 // função usada para empilhar um novo valor na pilha void empilhar(int valor, int *topo, int pilha[]){ // a pilha já está cheia? if(*topo == (TAM_MAX - 1)){ printf("\nA pilha está cheia.\n"); } else{ *topo = *topo + 1; pilha[*topo] = valor; } } // função usada para desempilhar o elemento no topo da pilha int desempilhar(int *topo, int pilha[]){ int valor; // a pilha está vazia? if(*topo == -1){ printf("\nPilha vazia\n"); exit(1); } else{ valor = pilha[*topo]; *topo = *topo - 1; } return valor; } // função usada para imprimir a pilha void imprimir_pilha(int *topo, int pilha[]){ int i; if(*topo == -1){ printf("\nPilha vazia\n"); exit(1); } else { // vamos percorrer todos os elementos da pilha for (i = 0; i <= *topo; i++) { printf("Item[%d]: %d\n", (i + 1), pilha[i]); } } } int main(int argc, char *argv[]){ setlocale(LC_ALL,""); // para acentos do português // vamos criar uma nova pilha int pilha[TAM_MAX]; // topo da pilha int topo = -1; int temp; // vamos empilhar 3 elementos empilhar(34, &topo, pilha); empilhar(52, &topo, pilha); empilhar(18, &topo, pilha); // vamos mostrar os elementos na pilha printf("Itens presentes na Pilha\n"); imprimir_pilha(&topo, pilha); // agora vamos remover e retornar dois elementos da pilha printf("\n"); temp = desempilhar(&topo, pilha); printf("O elemento desempilhado foi: %d\n", temp); temp = desempilhar(&topo, pilha); printf("O elemento desempilhado foi: %d\n", temp); // vamos mostrar os elementos na pilha novamente printf("\nItens presentes na Pilha\n"); imprimir_pilha(&topo, pilha); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Itens presentes na Pilha Item[1]: 34 Item[2]: 52 Item[3]: 18 O elemento desempilhado foi: 18 O elemento desempilhado foi: 52 Itens presentes na Pilha Item[1]: 34 |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
JavaScript - Como testar se um ponto está dentro de um círculo em JavaScript - Desenvolvimento de Games com JavaScript JavaScript - Cookies em JavaScript - Como escrever uma função para a criação de cookies em JavaScript |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |