Pages

segunda-feira, 11 de julho de 2016

Exemplo de Pilha Alocado Dinamicamente em C

Exemplo básico de uso de uma Pilha alocado dinamicamente em C.


#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
/*
FILO = ( o primeiro que entra é o ultimo que sai).
First 
in 
Last
Out
*/

struct PILHA{
int item;
struct PILHA *prox;
};

void  imprimirPilha(struct PILHA *pi);
struct PILHA *remover (struct PILHA *pi);

void imprimirPilha(struct PILHA *pi)
{
if(pi != NULL)
{
printf("%d ", pi->item);
imprimirPilha(pi->prox);
}
}

struct PILHA *remover(struct PILHA *pi)
{
struct PILHA *pTemp = pi;
pi = pi->prox;
printf("\n\n\tElemento Removido: %d", pTemp->item);
free(pTemp);

return pi;
}

int main()
{
struct PILHA *p = NULL;
int opc;

do
{
system("cls");
printf("1 - Inserir numero\n"
"2- Exibir numeros\n"
"3-Remover\n"
"0-Sair");
scanf("%d", &opc);
getchar();

switch(opc)
{
case 1:
{
struct PILHA *pTemp = malloc(sizeof(struct PILHA));

printf("Inserir um valor: ");
scanf("%d", &pTemp->item);

pTemp->prox = NULL;

if(p == NULL)
{
p = pTemp;
}else{

pTemp->prox = p;
p = pTemp;
}
}break;
case 2:
{
if(p == NULL)
{
printf("\n\n\tNao ha numeros cadastrados!");

}else{
system("cls");

imprimirPilha(p);
}
}break;
case 3:
{
if(p == NULL)
{
printf("\n\n\tNao ha numeros cadastrados!");
}else{
system("cls");

p = remover(p);
}

}break;
case 0: break;
default:
printf("\n\n\tOpcao Incorreta !!");
break;
}
getchar();
}while(opc != 0);

return 0;
}


Duvidas ou Trabalhos para fazer entre em Contato: marcofernando71@gmail.com

0 comentários:

Postar um comentário