我有這個鏈表如何交換C中鏈接列表中的兩個節點?
struct Link
{
frame_t *frame;
struct Link *next;
};
現在我想更換兩個是與函數swap(),因此,例如交換節點(表4,7)會給我
[1, 2, 3, **7**, 5, 6, **4**, 8, 9, 10]
對於用的
[1, 2, 3, **4**, 5, 6, **7**, 8, 9, 10]
內容的列表清單我想這樣做是我真正需要更換那些之前使用節點,但我得到了無限循環和節點醫管局已被切斷。
link_t* tmp = currPrev->next;
link_t* tmpTwo = linkToChangePrev->next;
tmpTwo->next = tmp->next;
currPrev->next = tmpTwo;
tmp->next = tmpTwo;
linkToChangePrev->next = tmpTwo;
什麼是最有效的方式來更改鏈接列表中的兩個節點?
什麼是「frame_t」,爲什麼指向它的指針在您的示例中表示爲整數? – unwind
https://stackoverflow.com/questions/1535988/swapping-nodes-on-a-single-linked-list – rsp
儘管其中一個重複問題標記爲C++,但操作代碼與C代碼相同(但交換函數確實包含一個'cout << ... << endl;'行,這是純C++)。這涵蓋了更一般的情況;純粹的C問題涵蓋了更加有限的交換相鄰節點的情況。請注意,C++問題中的一個建議是交換有效載荷,而不是交換指針 - 這具有很大的優點,因爲可以在交換節點之前不需要了解節點的任何信息。 –