用头插法创建单链表实现栈的操作,存在BUG!不过 调试器什么的都坏了...
本帖最后由 风中醉柳 于 2014-5-6 19:43 编辑谁能帮我看下bug存在哪里....谢谢咯
#include<stdio.h>
#include<stdlib.h>
typedef int Emptype;
struct L_stack
{
Emptype data;
struct L_stack * next;
}StackSize;
typedef struct L_stack *Ptr;
typedef Ptr hStack;
hStack initstack()
{
hStack sBottom;
sBottom=(hStack )malloc(sizeof(StackSize));
if(!sBottom)
return NULL;
sBottom->next=NULL;
return sBottom;
}
void push(hStack s,Emptype a)
{
hStack add;
add=(hStack )malloc(sizeof(StackSize));
if(!add)
printf("stack NO space\n");
add->data=a;
add->next=s->next;
s->next=add;
}
Emptype pop(hStack s)
{
if(!s)
return 0;
hStack r=s;
Emptype io;
io=s->data;
s=s->next;
free(r);
return io;
}
void DestoryStack(hStack s)
{
hStack r;
if(!s)
printf("stack NO start\n");
while(s)
{
r=s;
s=s->next;
free(r);
}
}
int main(void)
{
hStack q=initstack(),S;
int i;
S=q->next;
for(i=0;i<=5;i++)
push(S,i);
for(i=0;i<5;i++)
printf("%d ",pop(S));
printf("\n");
}
本帖最后由 elvo 于 2014-5-7 16:46 编辑
根据你的code修改了一下,修改的地方大都做了注释的
#include<stdio.h>
#include<stdlib.h>
typedef int Emptype;
typedef struct L_stack
{
Emptype data;
struct L_stack * next;
}StackSize;
typedef struct L_stack *Ptr;
typedef Ptr hStack;
/*
hStack initstack()
{
hStack sBottom;
sBottom=(hStack )malloc(sizeof(StackSize));
if(!sBottom)
return NULL;
sBottom->next=NULL;
return sBottom;
}
*/
void push(hStack *s,Emptype a) //传入了指向s的指针,以便能修改s
{
hStack add;
add=(hStack )malloc(sizeof(StackSize));
if(!add)
printf("stack NO space\n");
add->data=a;
if(!(*s)){
add->next=NULL;
(*s)=add;
}
else{
add->next=(*s);
(*s)=add;
}
}
Emptype pop(hStack *s) //同上
{
if(!(*s))
return 0;
hStack r=(*s);
Emptype io;
io=(*s)->data;
(*s)=(*s)->next;
free(r);
return io;
}
void DestoryStack(hStack *s)
{
hStack r;
if(!(*s))
printf("stack NO start\n");
while((*s))
{
r=(*s);
(*s)=(*s)->next;
free(r);
}
}
int main(void)
{
hStack q=NULL;
int i;
//S=q->next; 为什么要这样做S=NULL
for(i=0;i<=5;i++)
push(&q,i);
//DestoryStack(&q);
for(i=0;i<5;i++)
printf("%d ",pop(&q));
printf("\n");
}
elvo 发表于 2014-5-7 16:45 static/image/common/back.gif
根据你的code修改了一下,修改的地方大都做了注释的
现在已经好了,能用
页:
[1]