链表的第一个节点是从0开始还是1开始
struct list{
int num;
struct list *next;
};
typedef struct list list_single;
int main()
{
list_single *head;
return 0;
}
///程序不完整只做例子用
问题1:
比如 头结点---->节点1--->节点2---->节点3........---->节点n
链表的第一个节点是像数组0开始还是从1开始;
问题2:
在一般的应用中,头结点仅仅是作为一个头结点指针用(只给头节点的指针域赋值head->next=temp);
还是头结点就作为一个链表中有用的成员(给节点的数据域和指针域赋值head->next=temp,head->num=0) 本帖最后由 露转溪桥 于 2018-9-4 11:40 编辑
有头结点的链表,在链表的物理地址中,第一个节点就是头结点,但头结点的数据域不存任何内容,指针域存在一个指向第一个有效节点的地址 。
运算过程中的第一个节点比如数组0指的是第一个有效内容的节点 1. 看个人喜好,对用户来说基本上是被封装成 0 开始的。至于程序内部要如何安排,就看程序员。链表的结构简单,没有特别要求。有些结构则会在内部安排第一个成员为 1,使得索引遍历更为方便程序员的维护。
2. 链表中的 head 就像是一个队列的领队。领队有没有用处?看情况 XD。你这个是头插法,所以它重要~ claws0n 发表于 2018-9-4 11:50
1. 看个人喜好,对用户来说基本上是被封装成 0 开始的。至于程序内部要如何安排,就看程序员。链表的结构简 ...
同意! claws0n 发表于 2018-9-4 11:50
1. 看个人喜好,对用户来说基本上是被封装成 0 开始的。至于程序内部要如何安排,就看程序员。链表的结构简 ...
那么在实际的工作中多数是使用仅仅将头指针作为一个指针(数据域不赋值)用。还是作为一个数据域赋值的节点。小甲鱼的视频里就是头指针数据域也赋值了的 我是大甲鱼 发表于 2018-9-4 14:57
那么在实际的工作中多数是使用仅仅将头指针作为一个指针(数据域不赋值)用。还是作为一个数据域赋值的节 ...
看你喜欢,基本上不需要赋值,如果赋值的话,应该是计数器
head
------>[ e1 | ]------>[...]------>[ NULL ]
老师是用 ,但是这个结构只有两个成员,data 和 next [ data | next ]。只不过称这个结点为头结点而已。
页:
[1]