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();
}
Question
tahinf
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
mas parece q ele nem entra nessaLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.