2015-11-09 59 views
1

我是新的C語言編程,我還挺需要在frontBackSplitLinkedList部分一些幫助,拆分鏈表

例如,假設給定的鏈接列表爲:2 6 7 8 9 產生的正面和返回: 正面:2 6 7 背面:8 9

我已經通過一些網站搜索,但大多數編碼使用節點,而不是鏈接列表。

任何想法如何做到這一點?謝謝!

+3

節點是_make up_鏈接列表首先 –

回答

-1

如果我正確地理解了你的問題,那麼你想在中間拆分列表,其中不平坦列表將被拆分成比後退列表大一個的前列表。

首先,你必須有一個列表長度的計數。我建議你走清單,統計列表節點的數量。

然後你把這個數字如下:

count = (count+1)/2; 

現在,我們需要知道,如果你必須創建兩個新的列表(所以你必須讓所有的列表中的節點的副本),還是舊列表可能會被重複使用。假設它可能會被重用,那麼您將舊列表分配到frontlist,步行count列表節點,將其分配給backlist,並將其之前的那個的next成員設置爲NULL

現在你已經完成了,除了呼叫者可能不再使用原始列表(它已經變成等價物,實際上是frontlist)。

+0

代碼顯示鏈接列表的大小正在維護,因此沒有理由「走路列表,計算列表節點的數量」。您還需要將此值更新爲拆分的一部分。 – GroovyDotCom

1

您實際上不需要對列表中的元素進行計數,就我所見,您將_linkedlist中的元素數量存儲起來。不管你喜歡,你總是可以使用這個值來分割。我強烈建議首先簡化你的列表,這樣它可以將元素僅添加到列表的後面或前面,它將更容易使用它,但不會真正影響分割函數的原理。