#include<stdio.h>
#include<malloc.h>
#define elemType int
//定义数据元素
typedef struct LNode{
elemType data; //数据域
struct LNode *next; //指针域
}LNode,*List;
//头插法创建单链表
List ListHeadInsert(List p){
List s;
int x;
p = (List)malloc(sizeof(LNode)); //创建空结点
p->next = NULL;
printf("请输入数据(以9999结束):\n");
scanf("%d",&x);
while(x!=9999){
s = (List)malloc(sizeof(LNode));
s->data = x;
s->next = p->next;
p->next=s;
scanf("%d",&x);
}
return p;
}
//打印单链表
List PrintList(List p){
printf("调用成功");
while(p){
printf("%d",p->data);
p=p->next;
}
// if(!p->next){
// printf("该单链表为空链表");
// }
return p;
}
int main(){
List p ;
ListHeadInsert(p);
printf("创建成功\n");
PrintList(p);
}
单链表 为什么不能打印出单链表 能够调用函数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- qfl_sdu 2021-09-13 16:09关注
ListHeadInsert函数逻辑写错了,给你改一下
#include<stdio.h> #include<malloc.h> #define elemType int //定义数据元素 typedef struct LNode{ elemType data; //数据域 struct LNode *next; //指针域 }LNode,*List; //头插法创建单链表 List ListHeadInsert(List p){ List s,tt; //修改1,多声明一个变量 int x; p = (List)malloc(sizeof(LNode)); //创建空结点 p->next = NULL; tt = p; //修改2,下面的操作用tt,避免改变p的值 printf("请输入数据(以9999结束):\n"); scanf("%d",&x); while(x!=9999){ s = (List)malloc(sizeof(LNode)); s->data = x; s->next = NULL;//p->next; 修改3 tt->next = s ;//p->next=s; 修改4 tt = s; //修改5 scanf("%d",&x); } return p; } //打印单链表 void PrintList(List p){ //修改5,打印函数不用返回 List t = p->next; //修改6:因为你的头结点中没有存放数据,所以从p->next开始遍历输出 printf("调用成功"); while(t){ printf("%d",t->data); t=t->next; } // if(!p->next){ // printf("该单链表为空链表"); // } //return p; //打印函数,不用再返回了 } int main(){ List p = 0 ; ListHeadInsert(p); printf("创建成功\n"); PrintList(p); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Python语言实验
- ¥15 我每周要在投影仪优酷上自动连续播放112场电影,我每一周遥控操作一次投影仪,并使得电影永远不重复播放,请问怎样操作好呢?有那么多电影看吗?
- ¥20 电脑重启停留在grub界面,引导出错需修复
- ¥15 matlab透明图叠加
- ¥50 基于stm32l4系列 使用blunrg-ms的ble gatt 创建 hid 服务失败
- ¥150 计算DC/DC变换器平均模型中的参数mu
- ¥25 C语言代码,大家帮帮我
- ¥15 请问以下文字内容及对应编码是用了什么加密算法或压缩算法呢?
- ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
- ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)