从整数数组中创建单链表

时间:2017-12-05 02:16:40

标签: javascript arrays data-structures linked-list

我在使用整数数组并使用JavaScript创建单链表时遇到了麻烦。这听起来很容易,但有些东西我只是没有看到我所拥有的功能我很感激你能提供的任何帮助。

这是我用来制作节点的构造函数:

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;
}

这就是我正在编写的函数,它应该采用一个数组并从中创建一个链表。基本的想法只是一个循环,它将第一个值移开,直到没有任何东西可以转移:

var mySwiper = new Swiper( '#swiper-container',
                               {
                                   autoplay: {
                                       delay : 400000
                                   },
                                   loop: true,
                                   speed: 2800,
                                   grabCursor : true

                               }
                             );

我尝试使用几个基本数组运行它,它总是只返回数组中的最后一个值而不是链表。有什么简单的东西,我只是没有看到这里?提前致谢。

1 个答案:

答案 0 :(得分:1)

问题不在于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 = newNodetailNode.next = newNode而不是调用tailNode = newNode。循环。