交换链表c++中的2个节点
swapping 2 nodes in a linked list c++
我正在尝试交换链表中的两个相邻节点(在这种情况下是75和9),每次运行代码时,比如说使用75->9->767->2…的链表,我会得到整个列表,只需转到75->9->75->9->75->9,等等。我必须更新指针
您的问题是线路
nextPtr->next = tempPtr;
nextPtr = tempPtr;
我不确定,但我想你只是想打
nextPtr = tempPtr;
相反。
我猜您正在寻找成对交换,请使用此选项。如果进展顺利,请告诉我。对于75->9->767->2,它会产生9->75->2->762…如果你想要不同但相似的东西,你可以使用它并进行相应的更改。void swap(结构节点**头){if(*head==NULL ||(*head)->next==NULL)回来
struct node *prev = *head;
struct node *cur = (*head)->next;
*head = cur;
while (true)
{
struct node *next = cur->next;
cur->next = prev;
if (next == NULL || next->next == NULL)
{
prev->next = next;
break;
}
prev->next = next->next;
prev = next;
cur = prev->next;
}
}
提示:如果你想在链表中交换节点H(你称之为hdList)和N(nextTr),你必须让H的任何点现在都指向N。
也就是说,假设你知道你的列表中有一部分是
... P -> H -> N -> Q ...
并且你想要交换H和N。交换后列表的状态应该是
... P -> N -> H -> Q ...
对吧?但你不能这样做,因为你不知道过去是什么指向H(即P),所以你可以让它指向N。
我想你必须重新开始这件事了。
如果您想交换链表中的2个节点,为什么要尝试交换指针和所有节点?只需使用简单的交换逻辑交换其中的数据。让指针保持原样。如果这不是你想要的,请详细告诉我你到底想要它是什么。
相关文章:
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 为什么我的双向链表删除函数会删除多个节点?
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 比较两个节点坐标的最佳方法是什么?
- 生成所有具有 n 个节点的无向图
- 使用 Dijkstra 算法跟踪两个节点之间的最短路径
- 只有我的"链接列表"中的第一个节点正在打印
- 双向链表 - 无法删除第一个节点
- 如何仅在 2 个节点之间获取最短路径,给定邻接列表有向图?
- 图问题:找出两个节点是否在每个节点的O(1)时间和O(2)存储中共享同一分支
- 如何在单个链表中交换两个节点的位置,只修改指针
- 如何检查一行中的3个节点是否相同C++?
- 如何遍历具有两个节点的链接节点
- 链表中头/第一个节点的声明
- 查找树中两个节点之间的最大成本边
- 链表.如何删除列表中的第一个节点?
- 链表 C++中的多个节点
- C MPI,使用多个节点,首先在节点级别上降低,然后减小到头节点
- 查找树(不属于任何特定类型的简单连接树)中两个节点之间的路径
- 链接列表正在抛出异常,而不是打印第一个节点