javascript循环链表

时间:2013-01-13 09:46:03

标签: javascript linked-list

这段代码有什么问题?我想做一些类似于循环链接列表的东西。

    <script type="text/javascript" charset="utf-8">
        function LinkedText(text, nextLinkedText) {
            this.text = text;
            this.next = nextLinkedText;
            this.AsNext= function() {
                this.text = this.next.text;
                this.next = this.next.next;
                return this;
            }
        }

        var first = new LinkedText('first')
        var last = new LinkedText('last', first);
        first.next = last;

        alert(first.text); //show 'firts'
        alert(first.AsNext().text); //show 'last'
        alert(first.AsNext().text); //show 'last' not 'first' why?
        alert(first.AsNext().text); //show 'last'
        alert(first.AsNext().text); //show 'last' not 'first' why?
    </script>

1 个答案:

答案 0 :(得分:1)

重写GetNext:

this.GetNext = function() {
    return this.next;
}

当你想要的只是获取链接节点并访问它的文本时,在GetNext中重新分配 this.text 是没有意义的。

你可以像这样使用它:

var i = 0            // avoid infinite loop below
var maxruns = 10;    // avoid infinite loop below

var node = first;
while(node){
    doSomethingWithNode(node);
    node = node.GetNext();

    // avoid an infinite loop
    i++;
    if (i > maxruns) {
        break;
    }
}