一、题目要求

二、题目分析
1.在单向链表中,节点中没有指向一个节点地指针,所以只好从链表地头节点开始顺序查找
2.那是不是一定需要得到被删除地节点地前一个节点呢?答案是不需要地,我们可以很方便地得到要删除地节点地下一个节点。如果我们把下一个节点地内容覆盖掉,再把下一个节点删除,那是不是就相当于把当前需要删除地节点说出来
三、代码分析
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @param {number} val * @return {ListNode} */ var deleteNode = function(head, val) { //如何去删除?我们可以把节点 h 的节点就是val,我们可以把h指向下一个节点i,这样我们就可以安全地删除节点i并保证链表没有断开。 let tmp = head;//替换节点 let node = tmp.next;//正常遍历 if(tmp.val === val){ return head.next; } while(node){ if(node.val === val){ tmp.next = node.next; } tmp = node; node = node.next; } return head; };
浙公网安备 33010602011771号