c语言 链栈的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 23:35:19
typedef struct node{
int data;/*数据*/
struct node *next;
}StackNode,*PStackNode;

typedef struct{
PStackNode top;
}LinkStack,*PLinkStack;

/*定义完成,头结点为栈顶*/

创建栈 和 被的操作都可以实现

问题出在 销毁栈
/*函数原型*/
PLinkStack A;
A=(PlinkStack)malloc(sizeof(LinkStack));

void Destory_Stack(PLinkStack *S)
{
PStackNode p,q;
if(*S)
{
p=*S->top; /*问题之处说指向->top应该是一个结构或者类或者联合*/
while(p)
{
q=p;
p=p->next;
free(q);
}
free(*S);
}
*S=NULl;
}

请问怎么修改...谢谢
PLinkStack为指针型那么
他所定义的指针是否是指向指针的指针呢

PLinkStack定义为指针型,void Destory_Stack(PLinkStack *S)中应该是 PLinkStack S吧,下面的也类似

按定义看,它是一维指针,是指向LinkStack型结构体首地址的指针,不是二维指针

应该是S->top而不是*S->top吧,试试先

后面的free也写成free(S);
S=NULL;

p=(*S)->top; /*问题之处说指向->top应该是一个结构或者类或者联合*/