单链表一共分为两种情况
①有头结点的单链表
形式:
头指针head指向头结点,而头结点没有数据域,是一个空结点,
头结点的下一个节点才是存放第一个元素的结点
head:指向头结点
head->next:指向第一个元素结点
②没有头结点的单链表
形式:
头指针head指向第一个元素结点,head->key就是第一个元素结点的数值
head:指向第一个元素结点
有头结点和没有头结点的区别和影响
有头结点的单链表更好,没有头结点的单链表会复杂很多,
比如说我们要在单链表的第1个位置插入一个数,
我们肯定会用一个while()循环去找到要插入位置的前驱位置,
比如要插入第一个位置,我们就要找到0号位置,
1.如果有头结点的话,头结点就是能找到的0号位置,直接改变头结点的指针就好 。
2.如果没有头结点的话,如果要插入第一个位置,就是插入在头指针后面,
要单独讨论!!
有头结点的单链表和没有头结点的单链表的遍历:
①有头结点的单链表
需要遍历到头结点(无数据头结点)的情况:比如之前举例的要在i-1号元素后面插入元素
int j=0 //计数的j从0开始Node *p=L; //此时p已经指向了头结点
while(p)
{......