问。对双向链表元素进行排序的程序。

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

说明

在此程序中,我们将创建一个双向链表,并将链表的节点按升序排序。

  • 原始列表
Program to sort the elements of the doubly linked list

已排序列表

Program to sort the elements of the doubly linked list

为了实现这一点,我们维护两个指针:current(当前)和index(索引)。最初,current指向head节点,index将指向current之后的节点。通过比较current的数据与index的数据,遍历链表直到current指向null。如果current的数据大于index的数据,则交换它们之间的数据。在上面的示例中,current最初将指向7,index将指向1。由于7大于1,因此交换数据。继续此过程,直到整个链表按升序排序。

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
  2. 定义另一个用于创建双向链表的类,它有两个节点:头节点和尾节点。最初,头节点和尾节点将指向 null。
  3. addNode() 将向列表中添加节点。
    1. 它首先检查头节点是否为 null,然后将节点作为头节点插入。
    2. 头节点和尾节点都将指向新添加的节点。
    3. 头节点的前一个指针将指向 null,尾节点的下一个指针将指向 null。
    4. 如果头节点不为 null,则新节点将插入到列表的末尾,使得新节点的前一个指针将指向尾节点。
    5. 新节点将成为新的尾节点。尾节点的下一个指针将指向 null。
  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”,它将指向头节点。
    2. 打印 current.data 直到 current 指向 null。
    3. 在每次迭代中,current 将指向列表中的下一个节点。

解决方案

Python

输出

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

C

输出

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

JAVA

输出

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

C#

输出

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

PHP

输出

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