对单链表元素进行排序的程序

2025年03月17日 | 阅读 9 分钟

说明

在此程序中,我们需要对给定的单链表节点进行升序排序。

原始列表

Program to sort the elements of the singly linked list

已排序列表

Program to sort the elements of the singly linked list

为了完成此任务,我们维护两个指针:current 和 index。初始时,current 指向头节点,index 指向 current 后面的节点。遍历列表直到 current 指向 null,通过比较 current 的数据与 index 的数据。如果 current 的数据大于 index 的数据,则交换它们之间的数据。在上面的示例中,current 最初指向 9,index 指向 7。由于 9 大于 7,交换数据。继续此过程,直到整个列表按升序排序。

算法

  1. 创建一个名为 Node 的类,它有两个属性:data 和 next。Next 是指向链表中下一个节点的指针。
  2. 创建另一个名为 SortList 的类,它有两个属性:head 和 tail。
  3. addNode() 将向列表添加一个新节点
    1. 创建一个新节点。
    2. 它首先检查 head 是否等于 null,这意味着列表为空。
    3. 如果列表为空,则 head 和 tail 都将指向新添加的节点。
    4. 如果列表不为空,新节点将添加到列表末尾,使得 tail 的 next 指向新添加的节点。此新节点将成为列表的新 tail。
  4. sortList() 将对列表节点进行升序排序。
    1. 定义一个节点 current,它将指向 head。
    2. 定义另一个节点 index,它将指向 current 后面的节点。
    3. 比较 current 节点和 index 节点的数据。如果 current 的数据大于 index 的数据,则交换它们之间的数据。
    4. Current 将指向 current.next,index 将指向 index.next。
    5. 继续此过程,直到整个列表排序完成。
  5. display() 将显示列表中存在的节点
    1. 定义一个节点 current,它最初将指向列表的 head。
    2. 遍历列表直到 current 指向 null。
    3. 通过使 current 在每次迭代中指向它的下一个节点来显示每个节点。

解决方案

Python

输出

 Original list: 
9 7 2 5 4 
Sorted list: 
2 4 5 7 9 

C

输出

Original list: 
9 7 2 5 4 
Sorted list: 
2 4 5 7 9 

JAVA

输出

Original list: 
9 7 2 5 4 
Sorted list: 
2 4 5 7 9 

C#

输出

Original list: 
9 7 2 5 4 
Sorted list: 
2 4 5 7 9 

PHP

输出

 Original list: 
9 7 2 5 4 
Sorted list: 
2 4 5 7 9 
 
下一主题#