链表的特征
1、链表通过指针串联,每个节点有两部分组成,数据域和指针域;
2、链表是通过指针链接分布在内存中的各个节点,即不需要连续存在的区域
题目链接:移除链表元素
第一思路:
- 将指针指向为删除对象的前一个对象
- 无指向的指针由系统回收
- 使用原链表进行删除操作,需要考虑头指针的特殊情况
第二思路:
- 根据代码随想录中学到,添加虚拟头结点,全链表统一操作
注意点
- 头指针问题
- head == null 问题,避免空链表返回问题
- 判断全部为删除节点时,用while而非if,避免出现少循环,少删除的问题
移除链表元素.png
题目链接:设计链表
第一思路:
- 根据题目思考现有链表有哪些功能
1、链表拥有两个区域,数据域以及指针域,那么就需要定义一个链表结构体,看使用什么数据类型来定义
2、可以删除节点、添加头节点、获取链表某个索引的值、添加尾节点、在第index个节点前插入一个节点
- 在原有链表基础上进行操作
第二思路:
- 根据代码随想录中学到,添加虚拟头结点,全链表统一操作
注意点
- 没写完,明天补上
解题
题目链接:翻转链表
第一思路:
- 所有指针方向转为反方向
+不需要虚拟头结点
注意点
- 翻转的是节点,不是里面的值val
-
注意返回的值,是pre,翻转后的链表
翻转链表.png
网友评论