-3
下面的代碼片段會導致什麼結果?鏈接列表代碼示例
假定x是一個鏈表鏈接
a. x.setNext(x.getNext().getNext());
b. t.setNext (x.getNext());
x.setNext (t);
c. x.setNext(t);
t.setNext(x.getNext());
下面的代碼片段會導致什麼結果?鏈接列表代碼示例
假定x是一個鏈表鏈接
a. x.setNext(x.getNext().getNext());
b. t.setNext (x.getNext());
x.setNext (t);
c. x.setNext(t);
t.setNext(x.getNext());
解決這些都是通過圖中的最佳方式 - 它會幫助你瞭解了這麼多這麼容易。通過簡單的盒子代表每個節點&用箭頭連接它們。然後執行每個方法&。
這裏的第一個:
假設一個正常的鏈接列表與節點X,Y,Z順序連接:
x.getNext()
將導致node y
。y.getNext()
將導致node z
。z.getNext()
將導致null
,因爲之後沒有更多的節點。x.getNext().getNext()
會問「節點之後的下一個」,這是node z
setNext(n)
顯然將下一個節點作爲n
(以前的屬性被替換)因此在聲明中x.setNext(x.getNext().getNext());
,你知道x.getNext().getNext()
變成node z
。因此,你已經x.setNext(z);
,這將導致以下:
所以,現在你已經節點X &Ÿ指向到z。 Node x
不能再指向node y
,因爲您已將其設置爲指向node z
。現在,就鏈接列表而言,您只需保存起始節點,即node x
。你永遠不會有其他節點的引用。所以,你基本上已經失去了node y
。有沒有辦法穿越/從一開始/ X找到它:
x.getNext()
結果node z
z.getNext()
結果null
所以,既然node y
丟失,你的鏈接列表變得這樣的:
簡而言之,x.setNext(x.getNext().getNext());
意味着在x後刪除節點。希望你能弄清楚另外兩個。
添加語言標籤。 – 2014-11-03 03:12:16
這看起來像家庭作業可疑。堆棧溢出不是「請爲我做我的作業」網站。 – rmunn 2014-11-03 03:13:18
它的考試審查材料。不值得任何信用。不知道堆棧溢出是一個充滿'關心的管理員'的網站 – 2014-11-03 03:15:20