c语言 简单动态栈出错

来源:百度知道 编辑:UC知道 时间:2024/05/14 12:41:04
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

typedef struct SDT
{
int data;
struct SDT *next;

}sdata;

typedef struct stack
{
sdata *base,*top;
int s_size;
}stack;

void create(stack *s)
{
s->base=s->top=(sdata *)malloc(sizeof(sdata));
if(s->base==NULL)
{
printf("error!");
return ;
}
s->s_size=0;
s->top->next=s->base->next=NULL;

}

void push(stack *s,int e)
{
sdata *p;
s->top->data=e;
p=s->top;
s->top=(sdata *)malloc(sizeof(sdata));
s->top->next=p;
s->s_size++;
}

int pop(stack *s)
{
if(s->top==s->base)
{
printf("error!\n");
getch();
return 0;
}
s->top=s->top->next;
return s->top->data;

}

while(a.top->next!=NULL)
{
temp=pop(&a);
printf("%d\n");
}
getch();
}
这里啊……你输出啥???
改为
printf("%d\n",temp);

s->top=s->top->next;

s->top里的东西就这么没了。