带头节点和不带头节点单链表的基础概念
1、单链表定义
链表是通过一组任意的存储单元来存储线性表中的数据元素,
这些存储单元可以是连续的也可以是不连续的。
指针:通常使用“头指针”来标识一个链表,如单链表L,头指针为NULL的时表示一个空链表。链表非空时,头指针指向的是第一个结点的存储位置。
头结点:在单链表的第一个结点之前附加一个结点,称为头结点。头结点的Data域可以不设任何信息,也可以记录表长等相关信息。若链表是带有头结点的,则头指针指向头结点的存储位置。
无论是否有头结点,头指针始终指向链表的第一个结点。如果有头结点,头指针就指向头结点(只不过头结点的数据域为空而已)。
2、单链表分为有带头结点和不带头结点的单链表
带头结点的单链表,头指针head指向头结点,头结点的值域不包含任何信息,从头结点之后的结点开始存储信息。看个人编程习惯决定使用哪一种单链表。
不带头结点的
带头结点的
3、单链表分为有带头结点和不带头结点的插入方法
①不带头结点的链表,在表头插入结点
x->next = head;
head = x;
不带头结点的链表,在表头以外的地方插入结点
x->next = p->next;
p->next = x;
②带头结点的链表,在第一个位置插入结点
x->next = p->next;
p->next = x;
带头结点的链表,在其他位置插入结点
x->next = p->next;
p->next = x;