问:编写程序创建N个节点的双向链表并逆序显示。

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

说明

在此程序中,我们创建一个双向链表,然后通过反转列表方向来反转链表,并打印出节点。

Program to create a doubly linked list of n nodes and display it in reverse order

通过交换每个节点的 previous 指针和 next 指针来遍历链表。然后,交换 head 和 tail 节点的位置,即原始列表的 head 将成为新列表的 tail,原始列表的 tail 将成为新列表的 head。因此,反转后的列表将是

Program to create a doubly linked list of n nodes and display it in reverse order

算法

  1. 定义一个 Node 类,它表示列表中的一个节点。它将有三个属性:数据、previous 指向前一个节点,以及 next 指向下一个节点。
  2. 定义另一个用于创建双向链表的类,它有两个节点:头节点和尾节点。最初,头节点和尾节点将指向 null。
  3. addNode() 将向列表中添加节点。
    1. 它首先检查头节点是否为 null,然后将节点作为头节点插入。
    2. 头节点和尾节点都将指向新添加的节点。
    3. 头节点的前一个指针将指向 null,尾节点的下一个指针将指向 null。
    4. 如果头节点不为 null,则新节点将插入到列表的末尾,使得新节点的前一个指针将指向尾节点。
    5. 新节点将成为新的尾节点。尾节点的下一个指针将指向 null。
  4. reverse() 函数将反转给定的双向链表。
    1. 定义一个 current 节点,它最初将指向 head。
    2. 通过在每次迭代中使 current 指向 current.next 来遍历链表,直到 current 指向 null。
    3. 在每次迭代中,交换每个节点的 previous 和 next 指针,以反转列表的方向。
    4. 最后,交换 head 和 tail 的位置。
  5. display() 将显示列表中存在的所有节点。
    1. 定义一个新节点“current”,它将指向头节点。
    2. 打印 current.data 直到 current 指向 null。
    3. 在每次迭代中,current 将指向列表中的下一个节点。

解决方案

Python

输出

Original List: 
1 2 3 4 5 
Reversed List: 
5 4 3 2 1 

C

输出

Original List: 
1 2 3 4 5 
Reversed List: 
5 4 3 2 1 

JAVA

输出

Original List: 
1 2 3 4 5 
Reversed List: 
5 4 3 2 1 

C#

输出

Original List: 
1 2 3 4 5 
Reversed List: 
5 4 3 2 1 

PHP

输出

Original List: 
1 2 3 4 5 
Reversed List: 
5 4 3 2 1 
 
下一主题#