在循环单链表的末尾插入节点

17 Mar 2025 | 阅读 2 分钟

在循环单链表的开头插入节点有两种情况。一种是向空链表中插入节点,另一种是向已有的链表中插入节点。

  • 首先,使用 C 语言的 malloc 方法为新节点分配内存空间。

    在第一种情况中,条件 **head == NULL** 将为真。由于我们要插入节点的链表是循环单链表,因此链表中唯一的节点(刚刚插入到链表中的节点)将指向它本身。我们还需要让 head 指针指向这个节点。这可以通过以下语句完成:

    在第二种情况中,条件 **head == NULL** 将变为假,这意味着链表中至少有一个节点。在这种情况下,我们需要遍历链表才能到达链表的最后一个节点。这可以通过以下语句完成:

    循环结束后,指针 temp 将指向链表的最后一个节点。由于要插入链表的新节点将是链表新的最后一个节点。因此,现有的最后一个节点,即 **temp**,必须指向新节点 **ptr**。这可以通过以下语句完成:

    链表的新最后一个节点,即 ptr,将指向链表的头节点。

    这样,新节点将被插入到循环单链表的开头。

    算法

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

    • 步骤 2:设置 NEW_NODE = PTR
    • 步骤 3:设置 PTR = PTR -> NEXT
    • 步骤 4:设置 NEW_NODE -> DATA = VAL
    • 步骤 5: 设置 NEW_NODE -> NEXT = HEAD
    • 步骤 6: 设置 TEMP = HEAD
    • 步骤 7: 当 TEMP -> NEXT != HEAD 时重复步骤 8
    • 步骤 8:设置 TEMP = TEMP -> NEXT
    • [循环结束]

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

    Insertion into circular singly linked list at the end

    C 函数


    下一个主题双向链表