问:创建和显示双向链表的程序。

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

说明

在这个程序中,我们将创建一个双向链表并打印列表中存在的所有节点。

双向链表

双向链表是链表的一种变体。链表是一种线性数据结构,可以描述为节点的集合。节点通过指针连接。每个节点包含两个字段:数据和指向下一个字段的指针。链表的第一个节点称为头节点,链表的最后一个节点称为尾节点。

单向链表的局限性之一是它只能在一个方向(即向前)遍历。双向链表通过提供一个指向前一个节点的额外指针克服了这一限制。借助前一个指针,双向链表可以向后遍历,从而使插入和删除操作更容易执行。因此,双向链表中的典型节点由三个字段组成:

数据表示存储在节点中的数据值。

前一个表示指向前一个节点的指针。

Next 表示指向列表中下一个节点的指针。

Program to create and display a doubly linked list

上图表示了一个双向链表,其中每个节点都有两个指针,分别指向前一个节点和后一个节点。这里,节点1代表链表的头部。头部节点的前驱指针将始终指向NULL。节点1的后继指针将指向节点2。节点5代表链表的尾部,其前驱指针将指向节点4,后继指针将指向NULL

算法

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

解决方案

Python

输出

Nodes of doubly linked list: 
1 2 3 4 5

C

输出

Nodes of doubly linked list: 
1 2 3 4 5

JAVA

输出

Nodes of doubly linked list: 
1 2 3 4 5

C#

输出

Nodes of doubly linked list: 
1 2 3 4 5

PHP

输出

Nodes of doubly linked list: 
1 2 3 4 5
 
下一主题#