203 移除链表元素
在这道题中,我们可以用虚拟头节点来使head节点和之后的节点都一样,即删除后可以用dummy作为头节点。最后返回dummy.next即可。
var removeElements = function(head, val) {
const dummy = new ListNode(-1)
dummy.next = head
let prev = dummy, curr = head
while (curr !== null) {
if (curr.val === val) {
// 注意在删除时,不要动prev,
// 因为如果我们还需要删除curr.next的话,
// 要把prev接到前面
prev.next = curr.next
curr = prev.next
} else {
prev = prev.next
curr = curr.next
}
}
return dummy.next
};
206 反转链表
var reverseList = function(head) {
let pre = null, curr = head
while (curr !== null) {
const tmp = curr.next
curr.next = pre
pre = curr
curr = tmp
}
// end at curr === null,
// at the same time, pre is the previous curr
return pre
};