#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int id;
int score;
struct node *next;
}LinkList;
LinkList *create(){
LinkList *head ,*p;
int id;
int score;
p=(LinkList *)malloc(sizeof(LinkList));
head=p;
p->next=NULL;
printf("请输入学号和成绩:\n");
scanf("%d%d",&id,&score);
while(id!=0){
p->id=id;
p->score=score;
p->next=NULL;
scanf("%d%d",&id,&score);
}
return head;
}
void print(LinkList *head){
LinkList *p;
p=head->next;
while(p!=NULL)
printf("%d%d",p->id,p->score);
p=p->next;
}
main(){
LinkList *head;
create();
print(head);
}
我就想创建链表并打印出来,但是结果运行出问题了。求大神指点
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 泡视界 2021-01-25 10:40关注
凡写了注释的行,是改动了的行。
#include<stdio.h> #include<stdlib.h> typedef struct node { int id; int score; struct node* next; }LinkList; LinkList* create() { LinkList* head, * p; int id; int score; p = (LinkList*)malloc(sizeof(LinkList)); head = p; p->next = NULL; printf("请输入学号和成绩:\n"); scanf_s("%d %d", &id, &score); //%d%d改为%d %d,输入的时候两个书中间加一个空格 while (id != 0) { p->id = id; p->score = score; p->next = NULL; scanf_s("%d %d", &id, &score); //同上%d%d改为%d %d } return head; } void print(LinkList* head) { LinkList* p; p = head; while (p != NULL) { //按照create()的写法,头节点head是有数据的,因此头节点也需要打印 printf("%d %d", p->id, p->score); p = p->next; //并且p==NULL时,不应该再p = p->next,因此这句放到循环中 } //循环 } int main() { //main函数也需要返回类型,加int LinkList* head = nullptr; //指针初始化一下 head = create(); //按create()的写法,将返回头节点,因此head = create(); print(head); return 0; //为main 返回一个0, }
解决 无用评论 打赏 举报
悬赏问题
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)