我在使用 JavaScript 获取整数数组并创建单链表时遇到问题。这听起来很简单,但是我在我拥有的功能中没有看到一些东西,我非常感谢您提供的任何帮助。
这是我用来创建节点的构造函数:
function ListNode(val) {
this.val = val;
this.next = null;
}
这是我正在编写的函数,它应该接受一个数组并从中创建一个链接列表。基本思想只是一个 while 循环,它会移走第一个值,直到没有任何东西可以移动:
var createLinkedList = function(array) {
var head = new ListNode(parseInt(array[0]));
array.shift();
while(array.length) {
var prev = new ListNode(parseInt(array[0]));
head.next = head;
prev = head;
array.shift();
}
return head;
}
我尝试使用几个基本数组运行它,它总是只返回数组中的最后一个值而不是链接列表。有什么简单的东西我在这里没有看到吗?提前致谢。
最佳答案
问题不在于 array.shift
,而在于如何在 while 循环内将节点链接在一起。
要将节点链接在一起,基本上您需要执行以下操作:
var new_node = new ListNode(parseInt(array[0]));
head.next = new_node;
new_node = new ListNode(parseInt(array[1]));
head.next.next = new_node;
new_node = new ListNode(parseInt(array[2]));
head.next.next.next = new_node;
.
.
.
我想你明白了。因此,您要做的是重新设计 while 循环,存储 tailNode
的引用,而不是调用 head.next.next.next.next.next = newNode
,您可以在 while 循环内调用 tailNode.next = newNode
和 tailNode = newNode
。
关于javascript - 从整数数组创建单链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47645034/