一.单链表的定义:
相比于顺序表,单链表不可随机存取,因此单链表中查找数据必须是一个一个找-->查找效率低
二.用代码定义一个单链表:
单链表每一个节点有数据元素和存放该元素的指针,该指针指向下一个节点
GetElem方法解读:
把单链表L中的第i个节点取出来,并返回。
参数列表中LinkList L也可以用LNode *L。
LNode是一个结构体类型,LNode *就代表返回了一个指针,因为p为指针。(LNode * p)
LinkList是指针类型,用->关键词访问数据。
方法体解读:LNode *p=L->next;代表L是指针指向下一个节点
如果i为0,直接返回下一个节点;
不为0时如果走第二个if语句说明i为负数,边界点,如果是-1,下一个为0,但已经有了,
如果是-2,下一个是-1,就没意义了,返回空值。
两个if语句都没走时,就正常执行。
例如:
三.初始化单链表:
1.不带头结点的单链表:
注:InitList函数里的参数LinkList &L用了引用&,因为函数的结果最后还要用。没用&的话函数结束后相当于没调用。
2.带头结点的单链表:
四.不带头结点的单链表对比带头结点的单链表:
不带头结点的单链表那么头指针所指向的下一个节点就是实际用于存放数据的节点;
带头结点的单链表那么头指针他所指向的这个节点即头结点,是不存放实际元素的,只有这个头结点之后的下一个节点才会用于存放数据(常用带头结点的单链表)。