在单链表末尾插入节点

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

为了在末尾插入节点,需要考虑以下两种情况。

  1. 节点被添加到空链表中
  2. 节点被添加到链表的末尾

在第一种情况下,

  • 条件 (head == NULL) 满足。因此,我们只需要使用 C 中的 malloc 语句为节点分配空间。使用以下语句设置节点的数据和链接部分。
  • 由于 ptr 是链表中唯一要插入的节点,因此我们需要让链表的 head 指针指向此节点。这将通过以下语句完成。

在第二种情况下,

  • 由于 Head 不为 null,所以条件 Head = NULL 会失败。现在,我们需要声明一个临时指针 temp 来遍历链表。让 temp 指向链表的第一个节点。
  • 然后,使用以下语句遍历整个链表
  • 循环结束时,temp 将指向链表的最后一个节点。现在,为新节点分配空间,并将其项分配给其数据部分。由于新节点将是链表的最后一个节点,因此此节点的 next 部分需要指向 null。我们需要将 temp 节点(当前链表的最后一个节点)的 next 部分指向新节点 (ptr) 。

算法

  • 步骤 1: 如果 PTR = NULL,则输出 OVERFLOW
        转到步骤 1
       [IF 结束]
  • 步骤 2:设置 NEW_NODE = PTR
  • 步骤 3: 设置 PTR = PTR - > NEXT
  • 步骤 4: 设置 NEW_NODE - > DATA = VAL
  • 步骤 5: 设置 NEW_NODE - > NEXT = NULL
  • 步骤 6: 设置 PTR = HEAD
  • 步骤 7: 当 PTR - > NEXT != NULL 时,重复步骤 8
  • 步骤 8: 设置 PTR = PTR - > NEXT
    [循环结束]
  • 步骤 9: 设置 PTR - > NEXT = NEW_NODE
  • 步骤 10: 退出

inserting node at the last into a non empty list

C 函数

输出

Enter the item which you want to insert?
12

Node inserted
Press 0 to insert more ?
0

Enter the item which you want to insert?
23

Node inserted
Press 0 to insert more ?
2

下一主题#