问。排序循环链表元素的程序。

2025年1月8日 | 阅读 8 分钟

说明

在本程序中,我们将创建一个循环链表并将列表升序排序。在此示例中,我们维护两个节点:current 将指向 head,index 将指向 current 的下一个节点。第一个循环跟踪 current,第二个循环跟踪 index。在第一次迭代中,current 将指向 9。index 将指向 current 后面的节点,在本例中是 5。将 9 与 5 进行比较,因为 9 > 5,交换 index 节点的数据与 current 节点的数据。现在,current 将具有 5。现在,将 5 与 2 进行比较。再次 5 > 2,交换数据。现在 current 将保存 2,index 将保存 7。2 < 7,不执行任何操作。index 将递增并指向 3。2 < 3。不执行任何操作。通过这种方式,第一个位置将有一个最小值的节点。然后,我们将继续在列表的其余部分查找最小元素,直到列表完全排序。

9->5->2->7->3
2->9->5->7->3
2->3->9->7->5
2->3->5->9->7
2->3->5->7->9

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它有两个属性 data 和 next,next 将指向下一个节点。
  2. 定义另一个类来创建循环链表,它有两个节点:head 和 tail。
  3. sortList() 将对列表进行排序
    1. 我们将维护两个节点:current 指向 head,index 指向 current 的下一个节点。
    2. 从 index 开始遍历列表,直到到达末尾。
    3. 如果 current.data 大于 index.data,则交换它们之间的数据。
    4. 在第一次迭代中,我们将在列表的开头得到最小的元素。
    5. 然后 current 将指向 current.next。
    6. 重复步骤 b 到 e,直到找到下一个最小节点。
    7. 两个循环结束后,列表将被排序。

解决方案

Python

输出

Original list: 
 70 90 20 100 50
Sorted list: 
 20 50 70 90 100

C

输出

Original list: 
 70 90 20 100 50
Sorted list: 
 20 50 70 90 100

JAVA

输出

Original list: 
 70 90 20 100 50
Sorted list: 
 20 50 70 90 100

C#

输出

Original list: 
 70 90 20 100 50
Sorted list: 
 20 50 70 90 100

PHP

输出

Original list: 
 70 90 20 100 50
Sorted list: 
 20 50 70 90 100
 
下一主题#