2012-10-13 51 views
1

我試圖創建一個函數,它需要鏈接列表並搜索列表中的每個節點。如果節點具有匹配的int,i1,則與i2進行交換。最後返回一個鏈接列表,它是其替換副本。在線性鏈接列表中交換值並遞歸返回一個複製

迭代,我想我可以創建一個列表的副本,遍歷每個節點,然後檢查和替換。

for(LN copy = list; copy != null; copy = copy.next;) 
    if (copy.value == i1) 
    copy.value == i2; 
return copy; 

原型是

public static LN copySwap (LN list, int i1, int i2); 

我不知道我怎麼會開始遞歸實現這一點。

回答

1

假設爲LN構造函數接受的值,並在列表中的下一個節點,這應該工作:

public static LN copySwap (LN list, int i1, int i2) { 
    if (list == null) { 
     return null; 
    } 
    return new LN(list.value == i1 ? i2 : list.value, copySwap(list.next, i1, i2)); 
} 
+0

尼斯。我遇到了有條件的麻煩。 – nitiger