我是新的C語言編程,我還挺需要在frontBackSplitLinkedList部分一些幫助,拆分鏈表
例如,假設給定的鏈接列表爲:2 6 7 8 9 產生的正面和返回: 正面:2 6 7 背面:8 9
我已經通過一些網站搜索,但大多數編碼使用節點,而不是鏈接列表。
任何想法如何做到這一點?謝謝!
我是新的C語言編程,我還挺需要在frontBackSplitLinkedList部分一些幫助,拆分鏈表
例如,假設給定的鏈接列表爲:2 6 7 8 9 產生的正面和返回: 正面:2 6 7 背面:8 9
我已經通過一些網站搜索,但大多數編碼使用節點,而不是鏈接列表。
任何想法如何做到這一點?謝謝!
如果我正確地理解了你的問題,那麼你想在中間拆分列表,其中不平坦列表將被拆分成比後退列表大一個的前列表。
首先,你必須有一個列表長度的計數。我建議你走清單,統計列表節點的數量。
然後你把這個數字如下:
count = (count+1)/2;
現在,我們需要知道,如果你必須創建兩個新的列表(所以你必須讓所有的列表中的節點的副本),還是舊列表可能會被重複使用。假設它可能會被重用,那麼您將舊列表分配到frontlist
,步行count
列表節點,將其分配給backlist
,並將其之前的那個的next
成員設置爲NULL
。
現在你已經完成了,除了呼叫者可能不再使用原始列表(它已經變成等價物,實際上是frontlist
)。
代碼顯示鏈接列表的大小正在維護,因此沒有理由「走路列表,計算列表節點的數量」。您還需要將此值更新爲拆分的一部分。 – GroovyDotCom
您實際上不需要對列表中的元素進行計數,就我所見,您將_linkedlist中的元素數量存儲起來。不管你喜歡,你總是可以使用這個值來分割。我強烈建議首先簡化你的列表,這樣它可以將元素僅添加到列表的後面或前面,它將更容易使用它,但不會真正影響分割函數的原理。
節點是_make up_鏈接列表首先 –