如何删除带有指针的 Prototype 对象?
How to delete a Prototype object with a pointer to it?
我一直在编写 JavaScript 中的单向链表。
我的结构是:
function node(x)
{
this.x=x;
this.next=null;
}
function sl() //sl-singly linked list
{
this.first=null;
this.l=0; //length of list
}
哪里有问题:
删除最后一个方法:
sl.prototype.deletel=function()
{
if(this.first)
{
var t=this.first;
while(t.next)
t=t.next;
if(t)
t=null;
}
}
即使我将指向最后一个元素的指针设为空,仍然会打印最后一个节点。
我附上了工作片段。操作:
生成列表:01234
调用删除最后...
预期输出:0123
我得到的是:01234
function node(x)
{
this.x=x;
this.next=null;
}
function sl()
{
this.l=0;
this.first=null;
}
sl.prototype.insertl=function(x)
{
var newnode=new node(x);
var t=this.first;
if(!this.first)
this.first=newnode;
else
{
while(t.next)
t=t.next;
t.next=newnode;
}
l++;
}
sl.prototype.deletel=function()
{
if(this.first)
{
var t=this.first;
while(t.next)
t=t.next;
if(t)
t=null;
}
}
sl.prototype.console=function()
{
var t=this.first;
while(t)
{
document.write(t.x);
t=t.next;
}
}
sl();
sl.prototype.insertl(0);
sl.prototype.insertl(1);
sl.prototype.insertl(2);
sl.prototype.insertl(3);
sl.prototype.insertl(4);
sl.prototype.deletel();
alert("check");
sl.prototype.console();
Even though I made the pointer to the last element null
不,你没有。 JavaScript 中没有指针。 t
只不过是一个局部变量,您确实将其设置为 null
,但您没有更改任何对象的 属性。但是,您确实需要使倒数第二个节点的 .next
属性 无效:
sl.prototype.deletel = function() {
var t = this.first;
if (t) {
var n = t.next;
if (n) {
while (n.next) {
t = n;
n = n.next;
}
t.next = null; // remove last node from second-to-last
} else {
this.first = null; // remove last node from list
}
}
};
我一直在编写 JavaScript 中的单向链表。 我的结构是:
function node(x)
{
this.x=x;
this.next=null;
}
function sl() //sl-singly linked list
{
this.first=null;
this.l=0; //length of list
}
哪里有问题:
删除最后一个方法:
sl.prototype.deletel=function()
{
if(this.first)
{
var t=this.first;
while(t.next)
t=t.next;
if(t)
t=null;
}
}
即使我将指向最后一个元素的指针设为空,仍然会打印最后一个节点。 我附上了工作片段。操作:
生成列表:01234
调用删除最后...
预期输出:0123
我得到的是:01234
function node(x)
{
this.x=x;
this.next=null;
}
function sl()
{
this.l=0;
this.first=null;
}
sl.prototype.insertl=function(x)
{
var newnode=new node(x);
var t=this.first;
if(!this.first)
this.first=newnode;
else
{
while(t.next)
t=t.next;
t.next=newnode;
}
l++;
}
sl.prototype.deletel=function()
{
if(this.first)
{
var t=this.first;
while(t.next)
t=t.next;
if(t)
t=null;
}
}
sl.prototype.console=function()
{
var t=this.first;
while(t)
{
document.write(t.x);
t=t.next;
}
}
sl();
sl.prototype.insertl(0);
sl.prototype.insertl(1);
sl.prototype.insertl(2);
sl.prototype.insertl(3);
sl.prototype.insertl(4);
sl.prototype.deletel();
alert("check");
sl.prototype.console();
Even though I made the pointer to the last element null
不,你没有。 JavaScript 中没有指针。 t
只不过是一个局部变量,您确实将其设置为 null
,但您没有更改任何对象的 属性。但是,您确实需要使倒数第二个节点的 .next
属性 无效:
sl.prototype.deletel = function() {
var t = this.first;
if (t) {
var n = t.next;
if (n) {
while (n.next) {
t = n;
n = n.next;
}
t.next = null; // remove last node from second-to-last
} else {
this.first = null; // remove last node from list
}
}
};