双向链表的尾部删除

17 Mar 2025 | 阅读 2 分钟

删除双向链表的最后一个节点需要遍历链表以到达链表的最后一个节点,然后进行该位置的指针调整。

为了删除链表的最后一个节点,我们需要遵循以下步骤。

  • 如果链表已经为空,则条件 head == NULL 将为真,因此操作无法进行。
  • 如果链表中只有一个节点,则条件 head → next == NULL 将为真。在这种情况下,我们只需将链表的 head 设置为 NULL 并释放 head 以完全删除链表。
  • 否则,只需遍历链表以到达链表的最后一个节点。这将通过使用以下语句来完成。
  • for 循环结束时,ptr 将指向链表的最后一个节点。只需将 ptr 前一个节点的 next 指针设置为 NULL

释放指针,因为这是要删除的节点。

  • 步骤 1: 如果 HEAD = NULL
  • 输出 UNDERFLOW
    转到步骤 7
    [IF 结束]

  • 步骤 2: 设置 TEMP = HEAD
  • 步骤 3: 重复步骤 4 直到 TEMP->NEXT != NULL
  • 步骤 4: 设置 TEMP = TEMP->NEXT
  • [循环结束]

  • 步骤 5: 设置 TEMP ->PREV-> NEXT = NULL
  • 步骤 6: 释放 TEMP
  • 步骤 7: 退出

Deletion in doubly linked list at the end

C 函数

输出

1.Append List
2.Delete node from end
3.Exit
4.Enter your choice?1

Enter the item
12

Node Inserted
1.Append List
2.Delete node from end
3.Exit
4.Enter your choice?1

Enter the item
90

Node Inserted
1.Append List
2.Delete node from end
3.Exit
4.Enter your choice?2

Node Deleted

下一个主题双向链表