2012-01-18 10 views
0

javascriptを使用してリンクリストに最小値を見つける関数を作成しようとしています。しかし、私のコードは動作していないようです。私はwhileループに何か問題があると思う。私のコードは次のとおりです:リンクリストのJavaScriptループ

function find_smallest(ll){ 
    var i = ll; 
    var smallest = i.data; 
    while(i){ 
     if(i.data<smallest){ 
      smallest = i.data; 
     } 
     i.next; 
    } 
    return i.data; 
} 
+3

実際には、パラメータ「ll」の名前を付けることで、失敗したことを自分自身で解決しています。フォントは "11"のように見えます。 –

+0

http://stackoverflow.com/a/1669222/871580これを見てください。データを配列に変換するには、Array.prototype.slice.call(data、0)などのメソッドを使用してデータを変換する必要があります。 – CBusBus

答えて

0

あなたの私は今、すべての反復後i.nextを指している必要があります。

function find_smallest(ll){ 
var i = ll; 
var smallest = i.data; 
while(i){ 
    if(i.data<smallest){ 
     smallest = i.data; 
    } 
    i = i.next;//not i.next; 
} 
return i.data;//i think this is smallest not i.data 
} 
+0

ええ~~~それは動作します。感謝=))) –

1

あなたのポジションを進めるのを忘れている可能性があります。

function find_smallest(ll){ 
    var i = ll; 
    var smallest = i.data; 
    while(i) { 
    if(i.data < smallest){ 
      smallest = i.data; 
     } 
     i = i.next; // <== here 
    } 
    return smallest; 
} 

あなたはちょうどi.nextです。あなたは割り当てが必要です。また、i.dataを参照し、inullになるため、最後にエラーが発生します。

0

i.nextとは何ですか?

機能

i.next(); 

変数

i = i.next; 
0

あなたは「最小」ではなく「i.data」を返すことがあります。それは常にリンクされたリストの最後の値を返します。

関連する問題