我有这个链表如何交换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++问题中的一个建议是交换有效载荷,而不是交换指针 - 这具有很大的优点,因为可以在交换节点之前不需要了解节点的任何信息。 –