线性表(List):零个或多个数据元素的有限序列。
C语言中数组是从0开始第一个下标的。
线性表的顺序存储结构,在存、读数据时,时间复杂度都是O(1),在插入、删除时,时间复杂度都是O(n)。这说明,它比较适合元素个数不太变化,而更多是存取数据的应用。
无论链表是否为空,头指针均不为空。头指针是链表的必要元素。
注意区分单链表的头指针和头结点的差别。
单链表的插入和删除操作,时间复杂度也是O(n),但是当我们希望从i处插入10个节点时,顺序存储结构,每一次的插入都需要移动n-i个节点,对于单链表,我们只需要在第一次时,找到i的指针即可,通过移动指针即可完成,此时为O(1)。所以,对于插入和删除数据的操作越频繁的操作,单链表的效率优势就越是明显。
用数组描述的链表叫做静态链表(游标描述法)。
单链表是否为空判断p->next 是否为空,循环链表判断的是p->next 是否等于头结点。
双向链表的插入:先插入项,再后继,在前驱。