203.移除链表元素&707.设计链表&206.反转链表

链表的特征

1、链表通过指针串联,每个节点有两部分组成,数据域和指针域;
2、链表是通过指针链接分布在内存中的各个节点,即不需要连续存在的区域

题目链接:移除链表元素
第一思路:
  • 将指针指向为删除对象的前一个对象
  • 无指向的指针由系统回收
  • 使用原链表进行删除操作,需要考虑头指针的特殊情况
第二思路:
  • 根据代码随想录中学到,添加虚拟头结点,全链表统一操作
注意点
  • 头指针问题
  • head == null 问题,避免空链表返回问题
  • 判断全部为删除节点时,用while而非if,避免出现少循环,少删除的问题
移除链表元素.png
题目链接:设计链表
第一思路:
  • 根据题目思考现有链表有哪些功能

1、链表拥有两个区域,数据域以及指针域,那么就需要定义一个链表结构体,看使用什么数据类型来定义
2、可以删除节点、添加头节点、获取链表某个索引的值、添加尾节点、在第index个节点前插入一个节点

  • 在原有链表基础上进行操作
第二思路:
  • 根据代码随想录中学到,添加虚拟头结点,全链表统一操作
注意点
  • 没写完,明天补上
解题
题目链接:翻转链表
第一思路:
  • 所有指针方向转为反方向
    +不需要虚拟头结点
注意点
  • 翻转的是节点,不是里面的值val
  • 注意返回的值,是pre,翻转后的链表


    翻转链表.png

今日学习:虚拟头结点还有点不懂,需要再学习,所以还没有写入文章中

你可能感兴趣的:(203.移除链表元素&707.设计链表&206.反转链表)