Ir para conteúdo
Fórum Script Brasil
  • 0

pilha estrutura dinamica


tahinf

Pergunta

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();
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...