#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
struct LNode *next;
int data;
}LNode,*LinkList;
void creatList(LinkList L,int n){
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
LinkList end=NULL;
end=L;
LinkList node=NULL;
int i=0;
while(i<n){
node=(LinkList)malloc(sizeof(LNode));
scanf("%d",&(node->data));
end->next=node;
end=node;
i++;
}
end->next=NULL;
}
void PrintList(LinkList L){
LinkList p;
p=L->next;
while(p){
printf("%d ",p->data);
p=p->next;
}
}
int main(){
LNode La;
int n1;
scanf("%d",&n1);
creatList(&La,n1);
PrintList(&La);
return 0;
}
C语言链表打印不出来
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- a5156520 2022-09-21 16:43关注
把第10行去掉就可以了。因为头结点La已经在main函数创建了,只需要在它的next节点新增节点与数据即可,如果加上第10行,则在creatList()函数里增加的数据是第10行新创建的L节点它的数据,而不是main方法里的La头结点的数据。修改如下:
#include<stdio.h> #include<stdlib.h> typedef struct LNode{ struct LNode *next; int data; }LNode,*LinkList; void creatList(LinkList L,int n){ // L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; LinkList end=NULL; end=L; LinkList node=NULL; int i=0; while(i<n){ node=(LinkList)malloc(sizeof(LNode)); scanf("%d",&(node->data)); end->next=node; end=node; i++; } end->next=NULL; } void PrintList(LinkList L){ LinkList p; p=L->next; while(p){ printf("%d ",p->data); p=p->next; } } int main(){ LNode La; int n1; scanf("%d",&n1); creatList(&La,n1); PrintList(&La); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 前端echarts坐标轴问题
- ¥15 CMFCPropertyPage
- ¥15 ad5933的I2C
- ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
- ¥15 数学建模求思路及代码
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
- ¥15 谁会P4语言啊,我想请教一下
- ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
- ¥50 求解vmware的网络模式问题 别拿AI回答
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳