为何在链表中 我初始化链表的返回值是是首节点的地址,然后通过别的函数再对该链表进行修改就可以修改成功。
而在栈中,我返回值也是栈的地址却修改失败?
typedef struct Link
{
int data;
struct Link*pNext;
}node,*pnode;//链表的节点结构
pnode init();//返回值是创建好的头节点地址
bool insert(pnode,,int);//对该链表进行插入操作
void traverse(pnode)//对链表进行遍历;
void main(){
pnode head=init();//假设已初始化完毕,并返回头节点地址
insert(head,1);
traverse(head);
//这些都可以实现
}
但是为何在栈中就无法实现呢 我不太懂,求大家指教一下,下面是链栈的相关的结构定义
typedef struct Node //节点的定义
{
int data;
struct Node*Next;
}*pnode;//节点的定义
typedef struct Stack// 栈的定义
{
pnode top;
}stack,*pstack;
pstack init();
void push(pstack,int);
void traverse(pstack);
pstack init()
{
stack s;
s.top=NULL;
return &s;
}
void mian(){
pstack t=init();
push(t,2);
//....相关的操作也完成不了
}
应该是指针指向的问题 或者是对指针的地址进行修改的问题 但为何在链表结构就可以实现呢 实在不懂