链表中头指针与头节点的问题,求大神指教! 如果建立一个结构体 typedef struct stu

链表中头指针与头节点的问题,求大神指教! 如果建立一个结构体 typedef struct student { char name[20]; struct student *next; }book; 头指针的意思是不是就是想这样仅仅定义一个指向结构体的指针,如book *head; 头结点是不是不仅要定义一个指针,还要为其申请结点空间呀,如 book *L; L=(book *)malloc(sizeof(book)); 请问大神们我的理解是不是正确的呀?

首先,链表是不需要申请空间的。因为链表本来就是动态的。但是,每一个*head指针都必须指向一个空的结点,作为头节点。这是因为,当在链表中插入或者删除某一个结点时,如果没有头节点,那么就必须多写两个算法(在第一个结点前插入一个,尾部插入一个,中间插入一个),多了一个头节点,就可以把算法统一起来(你如果写过链表的插入程序就知道怎么回事了)。所以说,
*head=LinkedNode;指向一个为空的结点,这个节点是不放数据的,就是个打酱油的结点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-15
L做为头节点,本身指向一个空的指针,L->next 为 NULL,首先它本身不存放任何数据,其次它需要开辟一个空间,它的作用就是作为整个链表的头链接着整个链表,你如果需要存放数据,就在开辟一个节点(cur)让L->next = cur; 不断开辟和链接就行了
第2个回答  2014-03-11
没听懂。。。。。。。。。。。。。。。。。。。。。。。。。。。。。追问

那你回答什么!

相似回答