#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
整数,这样就不会发生无限循环。