public class Node {
double content;
Node next;
Node(final double node_value)
{
content = node_value;
next = null;
}
Node(final double node_value, final Node next_node)
{
content = node_value;
next = next_node;
}
}
節點類
public int delete(final int index)
{
Node iter = head;
for(int i=0; i<index; i )
iter = iter.next;
int value = iter.next.content;
iter.next = iter.next.next;
return value;
}
串列類中的洗掉方法
我無法弄清楚如何回傳這個值。當我將值從 int 更改為 double 時,它??無法回傳。如果我將 double 內容更改為 int,則程式的其余部分將不起作用。
是否有替代方法可以完成此洗掉方法?
uj5u.com熱心網友回復:
我猜你正在使用 final 關鍵字,它只能初始化一次。
因此,在初始化一次之后,您將無法更改節點指標。
從 Node 中洗掉 final 關鍵字,我認為它會再次起作用。
資料型別也是如此。
uj5u.com熱心網友回復:
該節點的內容是雙精度的,因此您應該通過雙精度變數而不是 int 變數來訪問它。一旦您將方法的回傳型別更改為雙精度值,這將允許您回傳雙精度值。
這應該可以解決問題:
public double delete(final int index)
{
Node iter = head;
for(int i=0; i<index; i )
iter = iter.next;
double value = iter.next.content;
iter.next = iter.next.next;
return value ;
}
int value在宣告中:當a 成為雙倍int value = iter.next.content時沒有多大意義iter.next.content
PS一些注意事項:
- 在java中,應該遵循某些語意和語法。我強烈建議您研究它們以使您的代碼更具可讀性和更易于除錯等。我在 for 回圈下添加了一個選項卡。
- 您可能正在訪問/洗掉不正確的節點。值得仔細檢查!
Node iter = head: 頭沒有指向任何東西。它不是作為方法引數傳遞的,也不是您提供的類代碼中的類變數- 我幾乎可以肯定這不會編譯..
uj5u.com熱心網友回復:
您的 iter 物件是空的,您沒有為它傳遞任何值,也沒有在任何地方實體化它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/437443.html
上一篇:如何在java中迭代陣列索引?
