int main() { STU* head = NULL, * p_new = NULL; int num, i; printf("请输入链表初始个数:\n"); scanf("%d", &num); for (i = 0; i < num; i++) { p_new = (STU*)malloc(sizeof(STU));//申请一个新节点 printf("请输入学号、分数、名字:\n"); //给新节点赋值 scanf("%d %d %s", &p_new->num, &p_new->score, p_new->name); link_creat_head(&head, p_new); //将新节点加入链表 } link_print(STU * head); }上述代码哪里有问题,并改正
时间: 2023-12-03 07:47:19 浏览: 78
stuinf.rar_Stuinf*getnext_Stuinf*stu_stuinf
上述代码有两个问题:
1. 在调用 link_print 函数时,参数未正确传递。
2. link_creat_head 函数未定义。
以下是修改后的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student {
int num;
int score;
char name[20];
struct student* next;
} STU;
void link_creat_head(STU** head, STU* p_new) {
p_new->next = *head;
*head = p_new;
}
void link_print(STU* head) {
STU* p = head;
while (p != NULL) {
printf("学号:%d,分数:%d,姓名:%s\n", p->num, p->score, p->name);
p = p->next;
}
}
int main() {
STU* head = NULL, * p_new = NULL;
int num, i;
printf("请输入链表初始个数:\n");
scanf("%d", &num);
for (i = 0; i < num; i++) {
p_new = (STU*)malloc(sizeof(STU));//申请一个新节点
printf("请输入学号、分数、名字:\n"); //给新节点赋值
scanf("%d %d %s", &p_new->num, &p_new->score, p_new->name);
link_creat_head(&head, p_new); //将新节点加入链表
}
link_print(head);
return 0;
}
```
阅读全文