2015-08-26 102 views
0

從一開始就給出一個單鏈表和中間節點的編號,我試圖通過將最後一個節點指向中間來創建一個圓形單鏈表一。我寫了下面的代碼:通過將最後一個節點指向中間節點將單鏈錶鏈接轉換爲循環鏈表

private static void PointToMiddle(ref CustomLinkedList myll, int middleNodeNumber) 
{ 
    CustomLinkedListNode currentNode = myll.Root; 
    CustomLinkedListNode middleNode = null; 
    for (int iCtr = 1; currentNode != null; iCtr++) 
    { 
     if (iCtr == middleNodeNumber) 
      middleNode = currentNode; 
     currentNode = currentNode.next; 
    } 
    currentNode = middleNode; 
} 

然而鏈表的最後一個節點仍然指向空的,而不是中間節點。我知道我錯了,我無法找到它。請幫忙。

回答

1

你就可以得到這個工作的唯一方法是改變:

currentNode = middleNode 

這一行簡單地取代了參考currentNode對象是參考middleNode對象。

您將需要此更改爲:

currentNode.Next = middleNode 

不幸的是 - 除非你CustomLinkedListNode您已經添加了一個二傳手「後續」屬性,currentNode.Next是隻讀的,這意味着你不能把它。因此,你想要的是不可能的。

+0

這樣一個明顯的錯誤..謝謝指出。我已經有了一個setter,現在代碼可以按預期工作。 – vekay