关于C语言数据结构单链表初始化的问题 5
这是我在书上看到的例子:typedefstruct{DateTypedate;structNode*next;}*Linklist;voidInitList(LinkLi...
这是我在书上看到的例子:
typedef struct
{
DateType date;
struct Node *next;
}*Linklist;
void InitList(LinkList *head)
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
(*head)->next=NULL; /*将单链表的头结点指针域置为空*/
}
我不明白这里为什么要用二级指针LinkList *head.
这样不可以吗?
void InitList(LinkList head)
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if((head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
head->next=NULL; /*将单链表的头结点指针域置为空*/
}
教材说”因为单链表操作用需要修改头指针,所以要用二级指针初始化“。我还不明白这句话。
求高手指点。
求高手指点。最好能像图片一样描述一下,之后发送到我的邮箱s461934079@126.com
拜托了,我想了好久都不明白这个问题
一楼的我也知道这个问题,这是问为什么要用二级指针,而不直接用一级指针。 展开
typedef struct
{
DateType date;
struct Node *next;
}*Linklist;
void InitList(LinkList *head)
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
(*head)->next=NULL; /*将单链表的头结点指针域置为空*/
}
我不明白这里为什么要用二级指针LinkList *head.
这样不可以吗?
void InitList(LinkList head)
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if((head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
head->next=NULL; /*将单链表的头结点指针域置为空*/
}
教材说”因为单链表操作用需要修改头指针,所以要用二级指针初始化“。我还不明白这句话。
求高手指点。
求高手指点。最好能像图片一样描述一下,之后发送到我的邮箱s461934079@126.com
拜托了,我想了好久都不明白这个问题
一楼的我也知道这个问题,这是问为什么要用二级指针,而不直接用一级指针。 展开
1个回答
展开全部
其实这是一个与C语言参数传值的问题,C语言规定实参变量对形参变量的参数传递是值传递,在执行函数调用时形参变量值的改变,并不影响主调函数的实参变量。
如:int x,y;
void fun(int a, int b)
{
b=b+a;
}
void main()
{ x=1; y=2;
fun(x, y);
.....
//此时仍然x=1; y=2;
}
但是,函数写成如下形式
void InitList(LinkList *head);可以实现引用传递参数的功能。
在需要函数内部修改链表头指针时,用该形式可以解决该问题。
而void InitList(LinkList head) 不可以在函数内部修改链表头指针。
如:int x,y;
void fun(int a, int b)
{
b=b+a;
}
void main()
{ x=1; y=2;
fun(x, y);
.....
//此时仍然x=1; y=2;
}
但是,函数写成如下形式
void InitList(LinkList *head);可以实现引用传递参数的功能。
在需要函数内部修改链表头指针时,用该形式可以解决该问题。
而void InitList(LinkList head) 不可以在函数内部修改链表头指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询