C语言 在链表的末尾插入节点


#include <stdio.h>
#include <conio.h>
struct node
{
    int data;
    struct node* next;
};
int main()
{
    struct node* head = NULL;
    struct node* second = NULL;
    struct node* third = NULL;
    head = (struct node*)malloc(sizeof(struct node));
    second = (struct node*)malloc(sizeof(struct node));
    third = (struct node*)malloc(sizeof(struct node));
    head->data = 1;
    head->next = second;
    second->data = 2;
    second->next = third;
    third->data = 3;
    third->next = NULL;
    struct node* new1;
    struct node* temp1;
    temp1 = head;
    while(temp1->next != NULL)
    {
        temp1 = temp1->next;
    }
    new1 = (struct node*)malloc(sizeof(struct node));
    temp1->next = new1;
    new1->data = 5;
    new1->next = NULL;
    while(temp1 != NULL)
    {
        printf("%d ",temp1->data);
        temp1 = temp1->next;
    }
    return 0;
}

这是用于在链表末尾插入节点的程序。预期输出为 = 1 2 3 5,5 是此处新节点的值。但当前输出为 = 3 5。我不知道我错在哪里。任何答案将不胜感激。

while(temp1->next != NULL)
 {
    temp1 = temp1->next;
 }

在此循环之后,您的temp1位于列表的末尾,您将在列表的末尾添加一个节点。

现在您正在尝试从temp1显然您只会得到 2 个新节点和之前的节点。如果要从head打印整个列表。在添加新节点后打印之前。将温度 1 指向头部。

temp1 = head;
while(temp1 != NULL)
{
    printf("%d ",temp1->data);
    temp1 = temp1->next;
}

在使用类似的东西到达列表末尾时要记住的一件事:如果你只是说third->next = first,那么它将永远持续下去。 这是需要注意的事情,也是您可能想玩的东西。 也许考虑在某处添加一个list_size整数,这样就不会发生无限循环。

相关内容

  • 没有找到相关文章

最新更新