0

このコードの何が問題になっていますか? ループしたリンクリストに似たものを作りたいです。

    <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>
4

1 に答える 1

1

GetNext を書き換えます。

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

リンクされたノードを取得してそのtextにアクセスすることだけが必要な場合、 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;
    }
}
于 2013-01-13T09:48:41.343 に答える