我正在尝试在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);
我将感谢任何评论:)
答案 0 :(得分:0)
我修正了以下问题:
{value:'',next:null}
:它不应该是一个数组(否则列表有多个头),它应该是一个对象,应该用null或let newNode={'value':value, 'next':null};
初始化。
this.head
遵循与example.head = 3;
相同的规则。
将example.head = {'value':3, 'next':null};
更改为this.next=null
PS :但会导致列表长度错误。
删除了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);
,接下来应该是每个节点的一个属性。
以下是一个工作样本。
Platform.runLater(Runnable)