单链表末尾删除

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

在以下两种情况下,会从链表的末尾删除一个节点。

  1. 链表中只有一个节点,并且需要删除该节点。
  2. 链表中有一个以上的节点,并且需要删除链表的最后一个节点。

在第一种情况下,

条件 head → next = NULL 将成立,因此,链表中唯一的节点 head 将被赋值为 null。这将通过以下语句完成。

在第二种情况下,

条件 head → next = NULL 将失败,因此,我们必须遍历节点才能到达链表的最后一个节点。

为此,只需声明一个临时指针 temp 并将其赋值为链表的 head。我们还需要跟踪链表中倒数第二个节点。为此,将使用两个指针 ptr 和 ptr1,其中 ptr 指向最后一个节点,ptr1 指向链表中倒数第二个节点。

所有这些都将通过以下语句完成。

现在,我们只需要使指针 ptr1 指向 NULL,然后指针 ptr 所指向的链表的最后一个节点将变为 free。这将通过以下语句完成。

算法

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

  • 步骤 2: 设置 PTR = HEAD
  • 步骤 3: 当 PTR -> NEXT != NULL 时,重复步骤 4 和 5
  • 步骤 4: 设置 PREPTR = PTR
  • 步骤 5: 设置 PTR = PTR -> NEXT
  • [循环结束]

  • 步骤 6: 设置 PREPTR -> NEXT = NULL
  • 步骤 7: 释放 PTR
  • 步骤 8: 退出

DS Delete element from end

C 函数

输出

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

Enter the item
12

Node inserted

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

Only node of the list deleted ...

下一主题#