如何用指针删除Prototype对象?

时间:2016-09-18 09:00:30

标签: javascript javascript-objects singly-linked-list

我一直用JavaScript编写单链表。 我的结构是:

public function getData( $data = 'one' )
{
    if ( Auth::user()->permission == 'admin' ) {
        //...
    } else {
        //...
    }
}

public function postData( Request $request, $data = 'one' )
{
    if ( Auth::user()->permission == 'admin' ) {
        //...
    } else {
        //...
    }
}

我遇到麻烦的地方:

删除最后一个方法:

function node(x)
{
    this.x=x;
    this.next=null;
}

function sl()  //sl-singly linked list
{
    this.first=null;
    this.l=0; //length of list
} 

即使我将指向最后一个元素的指针设为null,仍然会打印Last节点。 我附上了工作片段。操作:

生成清单:01234
调用删除最后...
预期产出:0123
我得到的:01234

sl.prototype.deletel=function()
{
    if(this.first)
    {
        var t=this.first;
        while(t.next)
            t=t.next;
        if(t)
            t=null;
    }
}

1 个答案:

答案 0 :(得分:1)

  

即使我将指针指向最后一个元素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
        }
    }
};