Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- struct Pilha{
- int tamanho;
- struct Pilha *topo;
- };
- struct no {
- int dado;
- struct no *proximo;
- };
- int IniciaPilha (struct Pilha *pilha){
- pilha -> tamanho =0;
- pilha -> topo = NULL;
- }
- int Vazia (struct Pilha *pilha){
- return (pilha -> topo == NULL);
- }
- void Empilha(int x, struct Pilha *pilha) {
- struct no *aux; //Nó auxiliar
- aux = (struct no *) malloc(sizeof(struct no)); //Inicializa o nó auxiliar
- aux->dado = x; //insere o dado passado pelo parâmetro no nó auxiliar
- aux->proximo = pilha->topo; //Faz o com que o próximo elemento a ser retirado da pilha, seja o que está atualmente no topo
- pilha->topo = aux; //Coloca o nó com o dado inserido no topo da pilha
- pilha->tamanho++; //após a inserção, a pilha aumenta seu tamanho
- }
- int Desempilha (struct Pilha *pilha){
- struct no *aux;
- int dado;
- if (Vazia (pilha)){
- printf("A pilha esta vazia \n");
- return 0;
- }
- aux = pilha -> topo;
- pilha -> topo = aux -> proximo;
- dado = aux -> dado;
- free (aux);
- pilha -> tamanho --;
- return dado;
- }
- int main() {
- int i, numero, max=5;
- struct Pilha *pilha;
- pilha = (struct Pilha *) malloc (sizeof(struct Pilha));
- IniciaPilha(pilha);
- for (i=0;i<max;i++) {
- printf("Leitura do valor (%d) :",i); scanf("%d",&numero);
- Empilha(numero, pilha);
- printf("Empilhou: %d \n", numero);
- }
- for(i=0;i<max;i++) {
- numero = Desempilha (pilha);
- printf ("Desempilhou: %d \n", numero);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement