给定的程序没有显示链表的所有元素。 我在识别错误时遇到问题。
起初我用一个空值初始化了头部,然后创建了一个临时变量并为它分配了一个整数值和指向下一个节点的指针。 然后我创建了另一个名为 temp1 的节点并将其与头部链接。 只有当“i”等于 1 时才会链接。
然后将 temp1 等同于下一个节点并执行相同的操作。
//链表 //插入节点。
#include <stdio.h>
struct node
{
int n;
struct node *next;
};
struct node *head;
int main ()
{
int i, s, x, y;
i = 0;
struct node *temp;
struct node *temp1;
struct node *cur;
head = NULL;
scanf ("%d", &s); //No. of nodes.
while (i < s)
{
scanf ("%d", &x);
if (head == NULL)
{
temp = (struct node *) malloc (sizeof (struct node));
temp->n = x;
temp->next = NULL;
head = temp;
}
else
{
temp = (struct node *) malloc (sizeof (struct node));
temp->n = x;
temp->next = NULL;
temp1 = temp;
if (i == 1)
{
head->next = temp1;
}
temp1 = temp1->next; //Assigning the next node.i.e. NULL value
}
i = i + 1;
}
cur = head;
while (cur != NULL)
{
printf ("%d", cur->n);
cur = cur->next;
}
return 0;
}
最佳答案
检查以下更改的部分
{
temp = (struct node *) malloc (sizeof (struct node));
temp->n = x;
temp->next = NULL;
head = temp;
temp1 = head;
}
else
{
temp = (struct node *) malloc (sizeof (struct node));
temp->n = x;
temp->next = NULL;
temp1->next = temp;
temp1 = temp1->next; //Assigning the next node.i.e. NULL value
}
而不是依赖
if (i == 1) {
head->next = temp1;
}
我在创建 head 时将 head
分配给 temp1
,这意味着只在第一次发生。
您的 else
部分也存在一些链接问题。
关于c - 链表程序运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825424/