Pra você que ta achando que é dessa pilha que a gente está falando =D fonte da imagem: bdfatec.blogspot.com.br |
CONCEITOS
Para certas aplicações, tornam-se úteis estruturas de dados, constituídas por conjuntos de elementos organizados NÃO pelos VALORES DOS DADOS, mas em função de um determinado CRITÉRIO QUE REGULAMENTA A ENTRADA E A SAÍDA dos dados na estrutura.
FILO: First In, Last Out – O primeiro a entrar na estrutura é o último a sair.
Uma pilha é um tipo especial de lista linear em que todas as operações de inserção, remoção ou consulta são realizadas em uma só extremidade, denominada TOPO. Agora se você está procurando uma fila, em outras palavras, o primeiro objeto inserido é também o primeiro a ser removido. Clique aqui para saber mais <<FIFO(First In, First Out)>>
Funcionamento
Cada vez que um novo elemento deve ser inserido na pilha, ele é colocado no seu topo; e em qualquer momento, apenas aquele posicionado no topo da pilha pode ser removido. Percebemos claramente um padrão de comportamento que indica que o primeiro elemento a ser inserido (empilhado), é o último elemento a ser removido.
Funcionamento pilha FILO fonte da imagem: http://www.linhadecodigo.com.br |
Certo agora vamos ao exercício proposto em sala. Criar uma pilha (FILO) que contenha os seguintes itens:
- Inserir um elemento;
- Exibir a pilha inteira;
- Exibir o último elemento;
- Exibir o primeiro elemento;
- Eliminar um elemento;
- Testar se a pilha está vazia.
Essa parte iremos incluir as bibliotecas e criar a estrutura da pilha
#include<stdio.h>
#include<windows.h>
#include<conio.h>
struct noPilha
{
int iInfo;
noPilha *pAnt;
}; noPilha *topo=NULL;
Agora iremos inserir os métodos para realizar as operações do menu
void inserir(){
int valor;
printf("\n\t Digite um valor qualquer.:");
scanf("%d",&valor);
noPilha *novo = (noPilha*)malloc(sizeof(noPilha));
novo -> iInfo = valor;
novo -> pAnt = topo;
topo = novo;
printf("\n\t Valor inserido com sucesso!!");
}//fim inserir
void imprime(){
noPilha *pAux=topo;
if(topo == NULL)
printf("\n\nA lista esta vazia \n\n ");
else{
printf("\n\nPercorrendo a Lista e exibindo os valores \n\n ");
while(pAux != NULL){
printf("\n elemento: %d",pAux->iInfo);
pAux = pAux->pAnt;
}//fim while
}//fim if
}// fim Imprime
void pilhaVazia(){
if(topo == NULL) printf("\n\t A PILHA esta vazia");
else printf("\n\t A PILHA não está vazia");
}// fim pilhaVazia
void imprimeUltimo(){
printf("\n\t O ultimo Elemento da Pilha.: %d",topo->iInfo);
}//fim imprimeUltimo
void imprimePrimeiro(){
while(topo->pAnt != NULL)
topo = topo->pAnt;
printf("\n\t O primeiro Elemento da Pilha.: %d",topo->iInfo);
}//imprimePrimeiro
void eliminarElemento(){
noPilha *pAux;
if(topo != NULL){
pAux=topo->pAnt;
free(topo);
topo = pAux;
printf("\n\t Elemento eliminado com sucesso!!");
}else printf("\n\nA lista esta vazia \n\n ");
}//eliminarElemento
Agora iremos inserir o main com o menu
int main(){
int nOpc;
do{
printf("----------------------- Menu --------------------------------");
printf("\n\n\t1 - Inserir um Elemento");
printf("\n\t2 - Exibir a pilha TODA");
printf("\n\t3 - Exibir o ultimo Elemento");
printf("\n\t4 - Exibir o primeiro Elemento");
printf("\n\t5 - Eliminar um Elemento");
printf("\n\t6 - Testar se a pilha está Vazia");
printf("\n\t0 - Sair");
printf("\n\nDigite a opcao desejada: ");
scanf("%d",&nOpc);
switch (nOpc){
case 0:
printf("\n\nObrigado por utilizar o programa\n\n Pressione ENTER para sair...");
break;
case 1:
inserir();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 2:
imprime();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 3:
imprimeUltimo();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 4:
imprimePrimeiro();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 5:
eliminarElemento();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
case 6:
pilhaVazia();
printf("\n\nPressione ENTER para continuar...\n\n");
break;
default:
printf("\n\nOpcao Invalida \n");
break;
} // fim switch
getch();
system("cls");
}while(nOpc != 0);
}//fim main
Programa em funcionamento (pilha) fonte da imagem: bdfatec.blogspot.com.br |
Bom pessoal o programa está aí! Qualquer dúvida escreva um comentário... grande abraço.
clique aqui ==> Estrutura de Dados - Lista Dinâmica com Menu
clique aqui ==> Estrutura de Dados - Lista Dinâmica Dupla
fonte: < Prof. Jean Daniel - Estrutura de Dados >
< Estrutura de Dados >
< Pilhas >
adaptado: arroyo, gabriel
Nenhum comentário:
Postar um comentário