1.链表问题的算法难度不高,但是考察代码实现能力。
2.链表和数组都是一种线性结构
①组是一段连续的存储空间
②链表空间不一定保证连续,为临时分配的。只能从链表头部开始一个个往下走,不能直接定位到i结点。
链表分类:
连接方向:单链表;双链表
有环无环:普通链表;环形链表(普通环形链表;循环链表)
链表问题代码实现的关键点和注意点:
1. 函数的返回值通常是结点类型;
2. 处理链表过程中,先采用画图的方式理清逻辑。
3. 链表问题对于边界条件讨论要严格:不要假设所有指针都是有意义的。特殊值例如空节点,头结点,尾结点。
链表插入和删除的注意事项:
1. 注意特殊情况:链表为null或者链表长度为1要特殊处理
2. 注意插入、删除操作中指针的调整
3. 当插入到头结点之前、尾结点之后;删除头结点、尾结点是特殊情况,注意包含。--其实自动包含,不需要特殊处理。
链表翻转问题:
即将链表的指针反向:
特殊处理当链表为null或者长度为1的特殊情况。
注意:链表问题最好不要使用额外的数据结构,即做到空间复杂度为O(1)