1. 删除链表中等于给定值 val 的所有节点
思路:
代码:
class Solution {
public ListNode removeElements(ListNode head, int val) {
if (head == null) {
return null;
}
ListNode prev = head;
ListNode cur = head.next;
while (cur != null) {
if (cur.val == val) {
prev.next = cur.next;
cur = cur.next;
}else {
prev = cur;
cur = cur.next;
}
}
if (head.val == val) {
head = head.next;
}
return head;
}
}
2. 反转一个单链表
https://leetcode-cn.com/problems/reverse-linked-list/description/
思路:
我们像定义一个空节点 prev,用来存储我们每次反转之后的结点, 然后定义一个 cur 结点用来遍历我们的链表,我们发现,在遍历 的过程中 我们反转后的 cur 结点会找不到下一个结点的位置,所以我们可以在找一个对象 curNext 来确定下一次 cur的位置。直至 cur 走完我们的链表,我们的头结点此时就是 prev,此时,反