2 回答

TA貢獻1810條經驗 獲得超4個贊
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int date;
struct node *next;
}lstack;
void init(lstack *s)
{
s->date = 0;
s->next = NULL;
}
int push(lstack *s,int e)
{
lstack *p;
p = (lstack *)malloc(sizeof(lstack));
p->date = e;
p->next = s->next;
s->next = p;
return 1;
}
int pop(lstack *s)
{
lstack *p;
int e;
if(s->next == NULL)
{
printf("棧已空!");
return 0;
}
p = s->next;
e = p->date;
s->next = p->next;
printf("出戰成功!\n");
free(p);
return 1;
}
int get(lstack *s)
{
int e;
if(s->next == NULL)
{
printf("棧已空!");
return 0;
}
e = s->next->date;
return e;
}
void visit(lstack *s)
{
lstack *p = s->next;
while(p != NULL)
{
printf("%d\n",p->date);
p = p->next;
}
}
int main()
{
int e = 0;
lstack s;
init(&s);
push(&s,1);
push(&s,2);
push(&s,3);
push(&s,4);
e = get(&s);
printf("棧頂元素為:%d\n",e);
pop(&s);
e = get(&s);
printf("棧頂元素為:%d\n",e);
visit(&s);
}

TA貢獻1886條經驗 獲得超2個贊
不用init()
把
lstack s;
init(&s);
兩句換成
lstack s = {0,NULL};
就沒問題
調試知
init()函數返回后
結構體中s.next不為空
導致visit()溢出
- 2 回答
- 0 關注
- 141 瀏覽
添加回答
舉報