• 0
Sign in to follow this  
tahinf

pilha estrutura dinamica

Question

estou tentando fazer um exercicio de pilha com estrutura de lista circular simplesmente encadeada, ele insere certinho, porém está dando problema na hora de retirar o último elemento da pilha

o borland acusa essa linha

numero = q->dado;
mas parece q ele nem entra nessa
if ((q->prox )== *pilha1)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct pilha
{
    int dado;
    struct pilha *prox;
};

typedef struct pilha *def_pilha;

def_pilha Pilha;

def_pilha cria_no (int numero)
{
    def_pilha no = (def_pilha) malloc(sizeof(struct pilha));
    no->dado = numero;
    printf("\n\n cria no numero %d", no->dado);
    no->prox = NULL;
return no;
}

void inicializa (def_pilha* pilha1)
{
    *pilha1 = NULL;
}

int vazia(def_pilha pilha1)
{
    return(pilha1 == NULL);
}

void push(int numero, def_pilha* pilha1)
{
    def_pilha q = cria_no(numero);
    if (vazia(*pilha1))
    {
          *pilha1 =q;
          printf("inicializou");
    }
    else{
    q->prox=(*pilha1)->prox;
    (*pilha1)->prox=q;
     printf("não inicializou");
    }

}

int pop(def_pilha* pilha1)
{
def_pilha q;
    int numero;
     printf("\n entrou pop");

    if (vazia(*pilha1))
    {exit(1); printf("\n  if vazia");}


           q = (*pilha1)->prox;
     numero = q->dado;

    if ((q->prox )== *pilha1)
    {printf("\n q = pilha");
    

        *pilha1=NULL;
        }
     else{

     
     (*pilha1) ->prox = q ->prox;
     }

    free(q);
    printf("passou free");
return(numero);
}



int main (void)
{
    int decimal,num=0;

    inicializa(&Pilha);

      printf(" insira numero \n");
    scanf("%d",&decimal);
    do{

    push(decimal,&Pilha);
      printf(" insira numero \n");
    scanf("%d",&decimal);

    }while(decimal!=0);

   while (!vazia(Pilha)) {
   num=pop(&Pilha);
    printf(" \n numero: %d ",num);
   }
getche();
}

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this