2017-10-02 12 views
0

下記のconsole.logの3番目の反復で、希望する出力、つまり逆リンクリストを取得しています。Javascriptの反復を使用したリバースリンクリスト

しかし、私はreturn previousを持っていますが、それでも1番目の反復から値を返します。

return previousの代わりにconsole.log(previous)でも、望ましい出力が得られます。

しかし、今問題は最終的にどのように表示するのですか?

誰かが説明してください、何が間違っていますか?それはreturn previous

に所望の出力を与えていた

reverse(){ 
     var current= this.head,previous=null; 
     while(current) 
     { 
     var next = current.next; 
     current.next = previous; 
     previous = current; 
     current = next; 
     console.log(previous); //I am getting my answer at the third iteration 
     } 
     return previous; // 
    } 

class LinkedList { 
 
    constructor() { 
 
    this.head = null; 
 
    this.length = 0; 
 
    } 
 

 
    add(value) { 
 
    var node = new Node(value); 
 
    if (this.head == null) { 
 
     this.head = node; 
 
     this.length++; 
 
    } else { 
 
     var current = this.head; 
 
     while (current.next) { 
 
     current = current.next; 
 
     } 
 
     current.next = node; 
 
     this.length++; 
 
    } 
 
    } 
 

 
    reverse() { 
 
    var current = this.head, 
 
     previous = null; 
 
    while (current) { 
 
     var next = current.next; 
 
     current.next = previous; 
 
     previous = current; 
 
     current = next; 
 
     console.log(previous); 
 
    } 
 
    return previous; 
 
    } 
 
} 
 

 
class Node { 
 
    constructor(value) { 
 
    this.value = value; 
 
    this.next = null; 
 
    } 
 
} 
 

 
var ll = new LinkedList(); 
 

 
ll.add(3); 
 
ll.add(2); 
 
ll.add(7); 
 

 
ll.reverse(); 
 
console.log(ll.head);

+0

あなたが持っている正確な質問はタイトルからapperentされていない他の側 – Bergi

+2

に 'this.head'を設定することはありません。多分あなたはそれを変えるべきです。 – realbart

+3

編集をロールバックしました。解決策を見つけたときに質問を編集する代わりに[回答を投稿する](https://stackoverflow.com/help/self-answer)をクリックしてください。 – Bergi

答えて

0

必要だったことはすべて、この特定の質問のための機能ll.reverse()またはconsole.log(ll.reverse())を呼び出すことでした。

class LinkedList { 
 
    constructor() { 
 
    this.head = null; 
 
    this.length = 0; 
 
    } 
 

 
    add(value) { 
 
    var node = new Node(value); 
 
    if (this.head == null) { 
 
     this.head = node; 
 
     this.length++; 
 
    } else { 
 
     var current = this.head; 
 
     while (current.next) { 
 
     current = current.next; 
 
     } 
 
     current.next = node; 
 
     this.length++; 
 
    } 
 
    } 
 

 
    reverse() { 
 
    var current = this.head, 
 
     previous = null; 
 
    while (current) { 
 
     var next = current.next; 
 
     current.next = previous; 
 
     previous = current; 
 
     current = next; 
 
    } 
 
    return previous; 
 
    } 
 
} 
 

 
class Node { 
 
    constructor(value) { 
 
    this.value = value; 
 
    this.next = null; 
 
    } 
 
} 
 

 
var ll = new LinkedList(); 
 

 
ll.add(3); 
 
ll.add(2); 
 
ll.add(7); 
 
ll.add(9); 
 
console.log(ll.reverse());

関連する問題