在双向链表的末尾插入

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

为了在双向链表的末尾插入节点,我们必须确定链表是空的还是包含任何元素。使用以下步骤在双向链表的末尾插入节点。

  • 为新节点分配内存。使指针 **ptr** 指向要插入的新节点。
  • 检查链表是否为空。如果条件 **head == NULL** 成立,则链表为空。在这种情况下,节点将被插入为链表的唯一节点,因此该节点的 prev 和 next 指针将指向 NULL,head 指针将指向该节点。
  • 在第二种情况下,条件 head == NULL 为 false。新节点将被插入为链表的最后一个节点。为此,我们必须遍历整个链表才能到达链表的最后一个节点。将指针 **temp** 初始化为 head,并使用此指针遍历链表。

在此 while 循环结束时,指针 temp 指向最后一个节点。现在,我们只需要进行一些指针调整即可将新节点 ptr 插入到链表中。首先,使 temp 的 next 指针指向要插入的新节点,即 ptr。

使节点 ptr 的 prev 指针指向链表中现有的最后一个节点,即 temp。

使节点 ptr 的 next 指针指向 null,因为它将是链表中的新最后一个节点。

算法

  • 步骤 1:如果 PTR = NULL
  •  写 OVERFLOW
      转到步骤 11
     [IF 结束]

  • 步骤 2:设置 NEW_NODE = PTR
  • 步骤 3:设置 PTR = PTR -> NEXT
  • 步骤 4:设置 NEW_NODE -> DATA = VAL
  • 步骤 5:设置 NEW_NODE -> NEXT = NULL
  • 步骤 6:设置 TEMP = START
  • 步骤 7:重复步骤 8,直到 TEMP -> NEXT != NULL
  • 步骤 8:设置 TEMP = TEMP -> NEXT
  • [循环结束]

  • 步骤 9:设置 TEMP -> NEXT = NEW_NODE
  • 步骤 10C:设置 NEW_NODE -> PREV = TEMP
  • 步骤 11:退出

Insertion in doubly linked list at the end

C 语言程序

输出

Enter the item which you want to insert?
12

Node Inserted

Press 0 to insert more ?
2

下一个主题双向链表