本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。 函数接口定义: void input(); 该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下: struct stud_node { int num; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ struct stud_node *next; /*指向下个结点的指针*/ }; 单向链表的头尾指针保存在全局变量head和tail中。 输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。
时间: 2024-02-22 22:58:31 浏览: 79
好的,我已经明白了你的问题。以下是实现将输入的学生成绩组织成单向链表的函数input的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stud_node {
int num;
char name[20];
int score;
struct stud_node *next;
};
struct stud_node *head = NULL;
struct stud_node *tail = NULL;
void input() {
int num, score;
char name[20];
struct stud_node *node;
printf("请输入学生的学号、姓名、成绩:\n");
while (1) {
scanf("%d", &num);
if (num == 0) {
break;
}
scanf("%s%d", name, &score);
node = (struct stud_node *)malloc(sizeof(struct stud_node));
node->num = num;
strcpy(node->name, name);
node->score = score;
node->next = NULL;
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
}
```
这个函数首先定义了一个结构体`stud_node`,它包含了学号、姓名、成绩和指向下一个节点的指针。然后定义了两个全局变量`head`和`tail`,分别指向链表的头节点和尾节点。最后是函数`input`的实现,该函数使用`scanf`从输入中读取学生的信息,并将其组织成单向链表。每次读取一个学生的信息,就新建一个`stud_node`节点,并将其加入到链表的末尾。最后,如果输入的学号为0,就结束函数的执行。
阅读全文