不交换数据交换单链表中节点的程序2025年3月17日 | 阅读 10 分钟 说明在此程序中,我们需要在单链表中交换给定的两个节点,而不交换数据。  完成此任务的方法之一是交换给定两个节点的父节点,然后交换两个节点的子节点。 算法- 创建一个名为 Node 的类,它有两个属性:data 和 next。Next 是指向链表中下一个节点的指针。
- 创建另一个名为 SwapNodes 的类,它有两个属性:head 和 tail。
- addNode() 将向列表添加一个新节点
- 创建一个新节点。
- 它首先检查 head 是否等于 null,这意味着列表为空。
- 如果列表为空,则 head 和 tail 都将指向新添加的节点。
- 如果列表不为空,新节点将添加到列表末尾,使得 tail 的 next 指向新添加的节点。此新节点将成为列表的新 tail。
- swap() 将交换列表中存在的给定两个节点
- 设 n1 和 n2 是需要交换的值。
- 如果列表为空,则从函数返回。
- 如果 n1 和 n2 相等,则列表不会有任何改变。
- 如果列表不为空,则通过遍历列表来搜索 n1,使得 prevNode1 指向 node1 的前一个节点,node1 指向具有值 n1 的节点。
- 类似地,通过遍历列表来搜索 n2,使得 prevNode2 指向 node2 的前一个节点,node2 指向具有值 n2 的节点。
- 如果 prevNode1 指向 head,则 node2 将成为列表的 head。类似地,如果 prevNode2 指向 head,则 node1 将成为列表的 head。
- 如果 prevNode1 或 prevNode2 未指向 head,则交换节点,使得 prevNode1 成为 node2 的前一个节点,prevNode2 成为 node1 的前一个节点。
- 现在,交换 node1 和 node2 的下一个节点。
- display() 将显示列表中存在的节点
- 定义一个节点 current,它最初将指向列表的 head。
- 遍历列表直到 current 指向 null。
- 通过使 current 在每次迭代中指向它的下一个节点来显示每个节点。
解决方案Python输出 Original list:
1 2 3 4 5
List after swapping nodes:
1 5 3 4 2
C输出 Original list:
1 2 3 4 5
List after swapping nodes:
1 5 3 4 2
JAVA输出 Original list:
1 2 3 4 5
List after swapping nodes:
1 5 3 4 2
C#输出 Original list:
1 2 3 4 5
List after swapping nodes:
1 5 3 4 2
PHP输出 Original list:
1 2 3 4 5
List after swapping nodes:
1 5 3 4 2
|