Skip to content

Instantly share code, notes, and snippets.

@ReeSilva
Last active November 5, 2016 18:21
Show Gist options
  • Save ReeSilva/255dab806e4394a78ad92b2be66524ec to your computer and use it in GitHub Desktop.
Save ReeSilva/255dab806e4394a78ad92b2be66524ec to your computer and use it in GitHub Desktop.
Com o laço na função insere
#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