数据结构-单链表的初始化操作问题
本人刚刚学习C与数据结构,有些问题想请各位好心人帮忙解释一下,不胜感激!!!!单链表的存储结构用C语言描述如下:typedefstructNode{DataTypedat...
本人刚刚学习C与数据结构,有些问题想请各位好心人帮忙解释一下,不胜感激!!!!
单链表的存储结构用C语言描述如下:
typedef struct Node
{
DataType data;
struct Node *next;
}ListNode,*LinkList;
单链表的初始化操作:
void InitList(LinkList *head)
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if(((*head)=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
(*head)->next=NULL; /*将单链表的头结点指针域置为空*/
}
问题1:这里初始化函数的参数为什么要这样定义LinkList *head,如果要定义成LinkList head可行么?为什么!!!
问题2:这里 exit(-1);语句能帮忙解释一下他的用法么?
问题3:帮忙解释一下(*head)->next=NULL;他的具体含义吧!!!主要是(*head)这个不太明白!!! 展开
单链表的存储结构用C语言描述如下:
typedef struct Node
{
DataType data;
struct Node *next;
}ListNode,*LinkList;
单链表的初始化操作:
void InitList(LinkList *head)
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if(((*head)=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
(*head)->next=NULL; /*将单链表的头结点指针域置为空*/
}
问题1:这里初始化函数的参数为什么要这样定义LinkList *head,如果要定义成LinkList head可行么?为什么!!!
问题2:这里 exit(-1);语句能帮忙解释一下他的用法么?
问题3:帮忙解释一下(*head)->next=NULL;他的具体含义吧!!!主要是(*head)这个不太明白!!! 展开
2个回答
2010-05-12
展开全部
问题1:这里初始化函数的参数为什么要这样定义LinkList *head,如果要定义成LinkList head可行么?为什么!!!
答:LinkList head;只定义了一个简单指针变量
LinkList *head;定义了一个双重指针,如果要通过函数返回"指针"的值,得定义双重指针;所以你的想法不行.
问题2:这里 exit(-1);语句能帮忙解释一下他的用法么?
exit()函数是结点当前"进程",直接回到操作系统状态下,作用不是退出函数那样简单,而是结构当前正确运行的"进程",-1的意思是程序运行有错,可以理解为一个错误码.
问题3:帮忙解释一下(*head)->next=NULL;他的具体含义吧!!!主要是(*head)这个不太明白!!!
head是双重指针变量,(*head)就是取得head指向的内存中的值,这个值是一个"简单指针",指向一个结点,所以用:(*head)->next引用结构体中的next域.
由于*head指向的结点是头结点,该结点之后没有其它
答:LinkList head;只定义了一个简单指针变量
LinkList *head;定义了一个双重指针,如果要通过函数返回"指针"的值,得定义双重指针;所以你的想法不行.
问题2:这里 exit(-1);语句能帮忙解释一下他的用法么?
exit()函数是结点当前"进程",直接回到操作系统状态下,作用不是退出函数那样简单,而是结构当前正确运行的"进程",-1的意思是程序运行有错,可以理解为一个错误码.
问题3:帮忙解释一下(*head)->next=NULL;他的具体含义吧!!!主要是(*head)这个不太明白!!!
head是双重指针变量,(*head)就是取得head指向的内存中的值,这个值是一个"简单指针",指向一个结点,所以用:(*head)->next引用结构体中的next域.
由于*head指向的结点是头结点,该结点之后没有其它
展开全部
首先把单链表的初始化操作的函数给修改一下a !
void InitList(LinkList head)/* *LinkList本身已经是一个结构体指针类型了,当然如果向你这样定义也是可以的,LinkList *head就是一个二级指针了*/
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if(head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
(*head)->next=NULL; /*将单链表的头结点指针域置为空*/
}
问题一解答:LinkList *head 此时的head是指向链表头结点的指针。至于第二小问看上面我写的注释。
问题二解答:在vc中exit(0) 正常中止程序 exit(非0) 非正常中止程序 。
问题三解答:LinkList *head 中的head是指向LinkList二级指针变量。(*head)就是取得head指向的内存中的值,这个值是一个"简单指针",指向一个结点,(*head)->next引用结构体中的next域且为null。
void InitList(LinkList head)/* *LinkList本身已经是一个结构体指针类型了,当然如果向你这样定义也是可以的,LinkList *head就是一个二级指针了*/
/*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/
{
if(head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储空间*/
exit(-1);
(*head)->next=NULL; /*将单链表的头结点指针域置为空*/
}
问题一解答:LinkList *head 此时的head是指向链表头结点的指针。至于第二小问看上面我写的注释。
问题二解答:在vc中exit(0) 正常中止程序 exit(非0) 非正常中止程序 。
问题三解答:LinkList *head 中的head是指向LinkList二级指针变量。(*head)就是取得head指向的内存中的值,这个值是一个"简单指针",指向一个结点,(*head)->next引用结构体中的next域且为null。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询