在双向链表中在开头插入

17 Mar 2025 | 阅读 2 分钟

在双向链表中,链表的每个节点都包含双指针,因此与单向链表相比,我们需要维护更多的指针。

将元素插入双向链表有两种情况:链表为空或包含至少一个元素。执行以下步骤在双向链表的开头插入一个节点。

  • 在内存中为新节点分配空间。这将通过以下语句完成。
  • 检查列表是否为空。如果条件 head == NULL 成立,则列表为空。在这种情况下,节点将被插入为列表中的唯一节点,因此节点的 prev 和 next 指针将指向 NULL,并且 head 指针将指向此节点。
  • 在第二种情况下,条件 head == NULL 为 false,节点将被插入到开头。节点的 next 指针将指向现有节点的 head 指针。现有 head 的 prev 指针将指向正在插入的新节点。
  • 这将通过以下语句完成。

由于正在插入的节点是列表的第一个节点,因此其 prev 指针必须包含 NULL。因此,将 null 赋给其前部,并将 head 指向此节点。

算法

  • 步骤 1: 如果 ptr = NULL
  •   写入 OVERFLOW
     转到步骤 9
     [IF 结束]

  • 步骤 2: 设置 NEW_NODE = ptr
  • 步骤 3: 设置 ptr = ptr -> NEXT
  • 步骤 4:设置 NEW_NODE -> DATA = VAL
  • 步骤 5: 设置 NEW_NODE -> PREV = NULL
  • 步骤 6: 设置 NEW_NODE -> NEXT = START
  • 步骤 7: 设置 head -> PREV = NEW_NODE
  • 步骤 8: 设置 head = NEW_NODE
  • 步骤 9: EXIT

Insertion in doubly linked list at beginning

C 函数

输出

Enter the item which you want to insert?
12

Press 0 to insert more ?
0

Enter the item which you want to insert?
23

Press 0 to insert more ?
2

输出

Enter the item which you want to insert?
12

Press 0 to insert more ?
2

下一个主题双向链表