1. 203.移除链表元素
题目链接:
leetcode.cn/problems/re…
解题思路:
本题寓意删除相同的头节点,可用迭代的方法去操作。用temp表示当前节点。如果temp的下一个节点不为空且下一个节点的节点值等于给定的val,则需要删除下一个节点。删除下一个节点可以通过移动节点位置的方法去删除。
如果temp的下一个节点的节点值不等于给定的val,则保留下一个节点,将temp移动到下一个节点即可。
当temp的下一个节点为空时,链表遍历结束,此时所有节点值等于val的节点都被删除。
因为头节点head可能被删除,所以可以建一个临时头节点NewHead,去操作。
2. 707设计链表
题目链接:
leetcode.cn/problems/de…
解题思路:
个人使用了双向链表来实现,利用虚拟头节点进行操作。
3. 206.反转链表
题目链接:
leetcode.cn/problems/re…
解题思路:
首先定义一个虚拟头节点pre,遍历指针cur,和next节点,next是用来防止节点之间的数据断开。遍历指针节点初始化为head节点,进行遍历,进行反转操作。首先next初始化为cur的next节点,然后反转cur的next节点= 虚拟头节点pre,然后向后移动pre和cur,直到遍历指针cur为空。最后返回虚拟头节点pre。反转结束。