我对链接表实现的工作原理感到困惑

问题描述 投票:0回答:1

我最近才进入链接列表,我正在添加自己的“添加到结尾”功能。

void insert_at_end(Node** head, Node* node)
{
    Node* temp;

    temp = *head;

    if (temp == NULL) // linked list is empty
    {
        *head = node;
    }
    else
    {
        while (temp->pNext != NULL)
        {
            temp = temp->pNext;
        }
    temp->pNext = node;
    }
}

最初,我执行的是temp != NULL而不是temp->pNext != NULL,因为我认为这样会将我带到最后一个LAST节点,因为当temp在数据到达NULL之前仍有数据时,它将停止循环。 temp->pNext != NULL不会在倒数第二个节点处停止吗?因为当它意识到最后一个节点的下一个指针为NULL时它停止循环,所以它不会传播到该节点?

谢谢,如果我需要从呕吐这个词中清除任何内容,请告诉我。

c
1个回答
0
投票

temp-> pNext!= NULL停在倒数第二个节点上吗?

否,


她是便于理解的图片表示。

使用temp != NULLtemp将指向NULL

 +----+     +----+     +----+
 | 1  |---> | 2  |---> | 3  |--->NULL
 +----+     +----+     +----+
                                / \
                                 |
                                temp

使用temp->pNext != NULLtemp将指向最后一个节点。

 +----+     +----+     +----+
 | 1  |---> | 2  |---> | 3  |->NULL
 +----+     +----+     +----+
                         / \
                          |
                         temp
© www.soinside.com 2019 - 2024. All rights reserved.