【发布时间】:2019-08-14 16:18:44
【问题描述】:
我需要一些关于 Javascript 中的内存是如何工作的指针。在我从链表尾部删除第 n 个节点的实现中,我有一个占位符 resultHead。
在代码的最后,我有控制台记录 resultHead 并且第一次只是 head 的原始分配:
{"val":1,"next":{"val":2,"next":{"val":3,"next":{"val":4,"next":{"val ":5,"next":null}}}}}
但是第二次后我有这行:
slow.next = slow.next.next
然后控制台退出:
{"val":1,"next":{"val":2,"next":{"val":3,"next":{"val":5,"next":null}} }}
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @param {number} n
* @return {ListNode}
*/
var removeNthFromEnd = function(head, n) {
if(head.next === null){return null}
// use resultHead as a place holder and its next is the actual head
let resultHead = new ListNode(null);
resultHead.next = head;
// find the difference between fast and slow pointer
let fast = resultHead;
let slow = resultHead;
for(let i=0; i<=n; i++){
fast=fast.next;
}
while(fast){
slow = slow.next
fast = fast.next
}
console.log(JSON.stringify(resultHead.next))
slow.next = slow.next.next
console.log(JSON.stringify(resultHead.next))
return resultHead.next;
};
removeNthFromEnd({"val":1,"next":{"val":2,"next":{"val":3,"next":{"val":4,"next":{"val":5,"next":null}}}}}, 2)
所以代码应该删除带有node.val = 4的节点
slow.next = slow.next.next如何改变resultHead的值?
我还尝试在不同的位置控制台记录resultHead,但仅在slow.next = slow.next.next 更改resultHead 的值之后。
【问题讨论】:
标签: javascript javascript-objects singly-linked-list