You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言动态链表结构体无法获取输入数据,列表无输出问题求助

问题原因与修复方案

嘿,我一眼就瞅出问题所在了——你踩了C语言值传递的经典坑,导致链表头指针根本没被正确更新!

核心问题:没接收insertNode的返回值

C语言里函数参数是值传递,意思是你把main里的head传给insertNode时,函数拿到的只是这个指针的一份拷贝。insertNode内部确实给新节点分配了内存,也把内部的head指针指向了它,但这个修改只在函数内部有效——main里的原始head还是NULL!这就导致你每次插入完,链表头根本没变化,调用visualizer自然啥都打不出来。

另外还有个小细节:用scanf读字符串的时候,temp->modello本身就是数组的首地址,不需要加&,写成scanf("%s", temp->modello);就够了(temp->colore同理),不过这个只是写法冗余,不是导致无输出的主因。

怎么修复?

  • 更新main里的调用代码:把insertNode(head);改成head = insertNode(head);,这样才能把insertNode返回的新链表头赋值给main里的head,让它真正指向链表的第一个节点。
  • 优化scanf的写法:去掉字符串参数前的&,避免不必要的混淆。

修复后的关键代码片段

// main函数中case 1的修改
case 1:
    head = insertNode(head); // 必须接收返回的新头指针
    break;

// insertNode中scanf部分的优化
printf("Inserire il modello dell'auto: ");
scanf("%s", temp->modello); // 移除多余的&
printf("Inserire il colore dell'auto: ");
scanf("%s", temp->colore); // 移除多余的&

这样改完之后,你插入的车辆信息就能被正确存入链表,调用查看功能时就能正常输出所有数据啦!

内容的提问来源于stack exchange,提问作者Il_Kevo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:04:08