Java 对循环链表元素进行排序的程序

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

在此程序中,我们将创建一个循环链表并按升序对其进行排序。在此示例中,我们维护两个节点: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

算法

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

程序

输出

Original list: 
70 90 20 100 50
Sorted list: 
20 50 70 90 100
下一个主题Java 程序