#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录