Javatpoint标志
Javatpoint标志

程序在单链表中交换节点而不交换数据

解释

在这个程序中,我们需要交换单链表中给定的两个节点,而不交换数据。

程序在单链表中交换节点而不交换数据

完成此任务的方法之一是交换给定两个节点中的前一个节点,然后交换两个节点中的下一个节点。

算法

  1. 创建一个类Node,它有两个属性:data和next。Next是指向列表中下一个节点的指针。
  2. 创建另一个类SwapNodes,它有两个属性:head和tail。
  3. addNode()将向列表中添加一个新节点:
    1. 创建一个新节点。
    2. 它首先检查,头是否等于空,这意味着列表是空的。
    3. 如果列表为空,则头和尾都指向新添加的节点。
    4. 如果列表不为空,则新节点将被添加到列表的末尾,这样tail的next将指向新添加的节点。这个新节点将成为列表的新尾部。
  4. Swap()将交换列表中给定的两个节点:
    1. 设n1和n2是需要交换的值。
    2. 如果列表为空,则从函数返回。
    3. 如果n1和n2相等,那么列表中就不会有变化。
    4. 如果列表不是空的,那么通过遍历列表来搜索n1,使得prevNode1指向node1之前的节点,节点1指向值为n1的节点。
    5. 类似地,通过遍历列表来搜索n2,使得prevNode2指向node2之前的节点,而node2指向值为n2的节点。
    6. 如果prevNode1指向head,则node2将成为列表的head。类似地,如果prevNode2指向head,则node1将成为列表的head。
    7. 如果prevNode1或prevNode2不指向head,则交换节点,使prevNode1成为node2的前一个节点,prevNode2成为node1的前一个节点。
    8. 现在,交换node1和node2的下一个节点。
  5. Display()将显示列表中存在的节点:
    1. 定义一个节点电流,它将最初指向列表的头部。
    2. 遍历列表,直到当前指向null。
    3. 在每次迭代中,通过使current指向它旁边的节点来显示每个节点。

解决方案

Python

输出:

原列表:1 2 3 4 5交换节点后列表:1 5 3 4 2

C

输出:

原列表:1 2 3 4 5交换节点后列表:1 5 3 4 2

JAVA

输出:

原列表:1 2 3 4 5交换节点后列表:1 5 3 4 2

c#

输出:

原列表:1 2 3 4 5交换节点后列表:1 5 3 4 2

PHP

输出:

原列表:1 2 3 4 5交换节点后列表:1 5 3 4 2

下一个话题 #





Youtube 视频加入我们的Youtube频道:现在加入

反馈


帮助别人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


b .技术/马华






Baidu
map