线性表的链表存储:
一、单链表定义:
用代码定义一个单链表:
不带头结点的单链表定义:
带头结点的单链表定义:
单链表定义总结:
二、单链表的基本操作(插入+删除+查找)
1、插入
如何在 带头结点 的链表中按位序插入
代码实现:
如何在 不带头结点 的链表中按位序插入
代码实现:
指定结点后插操作
带头结点的指定节点后插操作
指定结点前插操作
通过头指针便利链表可以找到所有结点的地址
时间复杂度更简单的 指定结点前插操作:
思路:在指定结点后插入元素,然后调换两个结点的数据内容。
2、删除
按位序删除(带头结点)思路
代码实现:
时间复杂度更简单的 指定结点删除方式:
这种情况删结点,如果结点是最后一个的话第五行代码会执行出错。并且想要删除最后一个结点只能用第一种方式。
单链表的局限性:无法逆向检索,使用的时候有时候不方便。
3、查找
按位查找:
按值查找:
求表长:
总结:
三、单链表的建立
尾插法:
优化尾插法:
优化每次进入插入函数都需要找表尾的函数循环。用一个表尾指针代替。
头插法:
每次都从头结点进行尾插操作
常应用于链表的逆置。
总结: