【发布时间】:2021-08-14 16:40:25
【问题描述】:
一个名为node 的简单链表数据类型包含一个数字和一个指向下一个节点的指针
变量 x 用于scanf 从用户输入中捕获值
一个数组arr 用于保存指向所创建节点的指针
指向起始节点start_ptr的指针
第一个循环捕获用户输入,然后将其附加到节点并移动到下一个节点
然后将该节点的指针添加到arr
最后一个循环简单地循环从第一个节点开始的节点并打印从用户输入中捕获的每个数字
typedef struct node
{
int n;
struct node *next ;
}
node;
int main(void)
{
// variable to hold integers
int x ;
node arr[3];
node *start_ptr;
node *p = malloc(sizeof(node));
// check if memory allocated for node
if (p == NULL)
{
return 1;
}
start_ptr = p;
for (int i =0; i < 3; i++)
{
scanf("%i" , &x);
p->n = x;
p->next = realloc(p , sizeof(node));
arr[i] = *p;
}
for ( node *tmp = start_ptr ; tmp != NULL; tmp = tmp->next)
{
printf("%i", tmp->n);
}
return 0;
}
怎么了
当您运行代码时,它会从用户那里接受三个数字,然后开始打印最后一个数字,直到它崩溃或您终止程序
谁能解释为什么第二个循环不能正常工作
【问题讨论】:
-
realloc(p , sizeof(node));是错误的。你为什么要这样做? -
@n.1.8e9-where's-my-sharem。你能说清楚一点吗
-
如果你想要一个列表,为什么要分配一个数组?
-
@vonbrand 我使用 arr 检查数字
-
最后一个节点的
next字段没有设置为NULL。