#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 测距传感器数据手册i2c
- ¥15 RPA正常跑,cmd输入cookies跑不出来
- ¥15 求帮我调试一下freefem代码
- ¥15 matlab代码解决,怎么运行
- ¥15 R语言Rstudio突然无法启动
- ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
- ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
- ¥15 用windows做服务的同志有吗
- ¥60 求一个简单的网页(标签-安全|关键词-上传)
- ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法