如何對單鏈表中的元素進行排序(通過某些值,如list-> id)?我想出的想法是找到最大的價值並保存其索引。然後遍歷列表,以便*頭指針指向該元素...然後將該元素與第一個元素交換。最後一句......我該怎麼做?對單鏈表中的元素進行排序C
1
A
回答
3
交換數據通常比較容易,而不是「重新鏈接」列表,以便更改實際列表節點的順序。
如果你的領域是一個整數,你可以這樣做:
static void swap_ids(ListNode *a, ListNode *b)
{
const int a_id = a->id;
a->id = b->id;
b->id = a_id;
}
+0
謝謝,好點! – khernik
+0
偉大的想法:)如果列表中包含更復雜的元素,那麼交換可能需要比重新鏈接更多的操作。在這種情況下,+1。 –
0
我要說如何排序列表中的最好的辦法是實行merge sort。
你仍然試圖做的是被稱爲選擇排序,是可行的(實際上它不是很難)。您需要將指針保留爲列表中的最小的元素,然後移動鏈接以使其位於head元素之前(請記住也要移動head)。我說你需要選擇最小的元素,因爲通常你只保留一個指向頭的鏈接在一個鏈表中。
相關問題
- 1. 對C中的鏈表進行排序
- 2. 在C++中對鏈表進行排序
- 3. 對鏈表進行簡單排序
- 4. 對C中的鏈表進行排序(選擇排序)
- 5. 在DataMapper中對元素進行排序
- 6. 如何對{}的元素進行排序?
- 7. 如何對R中列表中的元素進行排序?
- 8. 如何對父元素中的XML元素進行排序?
- 9. 使用XSLT對元素進行排序
- 10. 如何對NSMutableArray元素進行排序?
- 11. Python:對列表中的特定元素進行排序
- 12. 如何對錶格中的Django元素列進行排序?
- 13. Python - 對列表中的元素進行排序
- 14. 對數組列表中的異類元素進行排序
- 15. 如何對列表中的元素進行多重排序
- 16. 插入排序對鏈表中的節點進行排序
- 17. 對不屬於表格的元素進行排序表
- 18. 鏈接列表中的排序元素
- 19. 在C中對列表進行排序#
- 20. 元素進行排序
- 21. 在excel中對錶單進行排序
- 22. 按元素列表的第二個元素對列表進行排序
- 23. 對整數鏈表進行排序?
- 24. 如何對鏈表進行排序?
- 25. 對這個鏈表進行排序?
- 26. 用Java對鏈表進行排序
- 27. 插入時對鏈表進行排序
- 28. 按單元格中的名稱對錶格進行排序
- 29. 使用XSLT對XML元素進行排序並對數據進行排序
- 30. 按升序對鏈表進行排序C++
您可以像列表或任何其他數據結構一樣對它進行排序:各種O(n)複雜性都有各種排序。如何交換鏈接列表的特定實現中的元素 - 取決於您如何實現鏈接列表。如果你的字段是一個整數,你當然可以使用着名的C「swap」函數。 – PinkElephantsOnParade