2012-01-18 68 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」來設置失敗。該字體看起來像「十一」。 – 2012-01-18 08:24:10

+0

http://stackoverflow.com/a/1669222/871580看看這個。您可能需要使用諸如Array.prototype.slice.call(data,0)之類的方法轉換數據以將數據轉換爲數組。 – CBusBus 2012-01-18 08:28:00

回答

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

是啊~~~它的作品。感謝=))) – 2012-01-18 08:20:32

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.datai在此時會是null

0

什麼是i.next

A 功能

i.next(); 

一個變量

i = i.next; 
0

你必須返回 '最小' 而不是 'i.data'。這將始終返回鏈表中的最後一個值。