链表的初始化,请指点

starluck 2004-09-09 12:12:33
数据结构中关于线性的链式操作始终看不明白,请各位能够多多指点(谢谢了);具体是这样的:

typedef struct Node
{
DataType data;
struct Node *next ;
}SLNode;

在书上它是这样初始化单链表的,我一直不明白这是为何:

void ListInitiate (SLNode **head) //链表的初始化
{
if(*head= (SLNode *)malloc(sizeof(SLNode))== NULL)
exit(1);
(*head->next = NULL);
}


为什么要将头指针定义为指向指针的指针呢,这样定义不行吗??
void ListInitiate (SLNode *head) //链表的初始化。
{
if(head= (SLNode *)malloc(sizeof(SLNode))== NULL)
exit(1);
(head->next = NULL);
}

小弟初学,请能指点;可能是我的基础不好,真的已经看了好久也没有看出原因,请大家指点一下。
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞在天空的鱼 2004-09-09
  • 打赏
  • 举报
回复
malloc()返回一个指针
starluck 2004-09-09
  • 打赏
  • 举报
回复
谢谢“晨星”大哥,小弟明白了。真的太谢谢了。11月要考程序员,数据结构还没有学好。
晨星 2004-09-09
  • 打赏
  • 举报
回复
不行,C语言的参数传递是值传递的,要想传出一个指针,就必须传入一个二级指针。这就好比要想传出函数内部修改过的整数,就必须传入整数指针。

注意,一级指针就是二级指针指向的“值”。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧