我怎样才能达到链表的下一个值?

时间:2018-03-09 22:55:12

标签: javascript oop properties linked-list null

我正在尝试在javascript中编写链接列表。我有一个类,一个构造函数和一个addtoLast函数,它提供了彼此之间的连接。

但是在addtoLast函数中,我无法达到任何对象的“ next ”属性。

它说

  

无法在数字'x'

上创建属性'next'

(x作为第一个值和链表的头部)

代码是:

class LinkedList
{
    constructor()
    {
        this.head=[];
        this.next=null;
        this.length=0;
    }

    addtoLast(value)
    {
        if(this.head==null)
        {
            this.head=value;
            this.length++;
        }
        else
        {
            let now=this.head;
            let newNode=value;

            while(now.next!=null)
            now=now.next;

            now.next=newNode;   //it gives that error
            newNode.next=null;  //and it gives too!
            this.length++;
        }  
    }
}

//and my main function is:

let example = new LinkedList();
example.head = 3;
example.addtoLast(9);
document.write(example);

我将感谢任何评论:)

1 个答案:

答案 0 :(得分:0)

我修正了以下问题:

  1. {value:'',next:null}:它不应该是一个数组(否则列表有多个头),它应该是一个对象,应该用null或let newNode={'value':value, 'next':null};初始化。

  2. this.head遵循与example.head = 3;相同的规则。

  3. example.head = {'value':3, 'next':null};更改为this.next=null PS :但会导致列表长度错误。

  4. 删除了class LinkedList { constructor() { this.head=null; //this.next=null; this.length=0; } addtoLast(value) { if(!this.head) { this.head={'value':value, 'next':null}; this.length++; } else { let now=this.head; let newNode={'value':value, 'next':null}; while(now.next!=null) now=now.next; now.next=newNode; //it gives that error newNode.next=null; //and it gives too! this.length++; } } } //and my main function is: let example = new LinkedList(); //example.head = {'value':3, 'next':null}; example.addtoLast(3); example.addtoLast(9); example.addtoLast(10); console.log(example); document.write(example);,接下来应该是每个节点的一个属性。 以下是一个工作样本。

  5. 
    
    Platform.runLater(Runnable)