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: 1179 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(): ----------------------------------------------------------------------
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>
#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 |
|
Delphi - Como calcular MDC em Delphi Java - Como comparar strings em Java usando os métodos compareTo() e compareToIgnoreCase() da classe String |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





