1.力扣203:移除链表元素
题目描述:题意:删除链表中等于给定值 val 的所有节点。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1
输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7
输出:[]
思路:思路简单,逻辑上删除是下一个指向下一个的下一个,物理上需要借助虚拟结点辅助删除。这里注意头结点的删除和其余结点的删除都需要用到我和while,且删除除头结点外的其余节点时,cur一定是找到要被删除结点的前一个结点。
代码如下:
总结:这道题思路简单,分两方面想:头结点+其余节点。
力扣707 设计链表
链表基础操作,过。
力扣206 翻转链表
问题描述:题意:反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
思路:设置pre指向当前结点cur的前一个,便于将当前结点移动到pre的下一个,同时设置一个temp保存当前节点cur的下一个。
代码如下:
1.正常双指针写法:
2.递归写法(思路一样,递归函数返回的一直是下一次的pre和cur)
总结:这道题主要是思路要对,如何使它翻转,就是设置一个pre保存前当前的前一个,便于使指针翻转,总体来看思路就是要把原链表的箭头翻过来。