Last active
November 5, 2016 18:21
-
-
Save ReeSilva/255dab806e4394a78ad92b2be66524ec to your computer and use it in GitHub Desktop.
Com o laço na função insere
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <conio.h> | |
struct Tipo_Pilha { //Struct Pilha | |
int cod; //Declaração de variavel | |
struct Tipo_Pilha *Prox ; //Declaração Ponteiro Prox apontando para Struct Pilha | |
};typedef struct Tipo_Pilha Pilha; //Apelidando struct de Pilha | |
Pilha *Topo; //Criação ponteiro Topo para apontar pro topo da Pilha | |
Pilha *Fundo; //Criação ponteiro Fundo para apontar pro fundo da Pilha | |
void FPVazia () { //Criação da função Pilha Vazia | |
Pilha *aux; //Criação ponteiro auxiliar apontando pra Pilha | |
aux = (Pilha*)malloc(sizeof(Pilha)); //Alocando memoria dinamicamente para para struct Pilha | |
Topo = aux; //Atribuindo aux pro Topo | |
Fundo = Topo; //Atribuindo Fundo ao Topo | |
Fundo->Prox = NULL; //Próximo fundo nulo | |
} | |
void Insere (){ //Criação da função de inserir elementos na Pilha, sempre inserir e atribuir o novo valor inserido ao Topo | |
int codigo, resposta; | |
while (1){ //Laço para usuário inserir valor | |
printf ("\nDeseja inserir um codigo? <1> SIM <outro valor> NAO: "); | |
scanf("%i", &resposta); | |
if (resposta == 1){ | |
printf ("Entre com o codigo: "); | |
scanf ("%i", &codigo); //Se usuário desejar continuar | |
Pilha *aux; //Criação ponteiro auxiliar apontando pra Pilha | |
aux = (Pilha*)malloc(sizeof(Pilha)); //Alocando memoria dinamicamente para para struct Pilha | |
aux->Prox = Topo; //Atribuindo o topo da Pilha ao próximo aux inserido na pilha | |
aux->cod = codigo; //Valor inserido pelo usuário | |
Topo = aux; //Atribuindo aux pro Topo | |
} | |
else { //Se não, sai do laço | |
break; | |
} | |
} | |
} | |
void Imprime (){ //Função para imprimir os elementos da Pilha | |
Pilha *aux; //Ponteiro aux apontando pra struct Pilha | |
aux = Topo; //Atribuindo aux ao topo da Pilha | |
while (aux->Prox !=NULL){ //Se | |
printf ("Item = %i\n", aux->cod); | |
aux = aux ->Prox; | |
} | |
} | |
void Remove (){ //Função que remove elementos da Pilha, sempre o último valor inserido | |
Topo = Topo->Prox; | |
} | |
main (){ //Função Principal | |
FPVazia (); //Chamada da função Pilha Vazia | |
Insere(); | |
Imprime (); | |
Remove(); //Chamada da função Remove | |
printf ("\nCom o ultimo valor da pilha removido: \n"); | |
Imprime (); //Chamada da função Imprime | |
getch (); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment