class node {
constructor(val) {
this.data = val;
this.next = null;
}
}
class linkedlist {
constructor() {
this.head = null;
}
push = (val) => {
if (!this.head) {
this.head = new node(val);
return;
}
let temp = new node(val);
temp.next = this.head;
this.head = temp;
}
print = () => {
while (this.head) {
console.log(this.head.data);
this.head = this.head.next;
}
}
}
var ll = new linkedlist();
var n = 5;
while (n--) ll.push(n);
ll.print(); // 0 1 2 3 4
console.log(ll.head); // null
为什么head
仍然为空?是因为我使用let
声明类变量吗?head
必须是全局范围才能修改它的值吗?为什么print
函数在head
仍然为空的情况下工作得很好?
1条答案
按热度按时间j9per5c41#
你的打印函数正在递增head直到它为空,所以当你调用print后检查head的值时,它总是给予null。总是初始化临时变量为head,并使用它像下面这样迭代,以保持对列表的引用。