请你用C语言实现一个将输入的学生成绩组织成单向链表的简单函数。 函数接口定义: void input(); 该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下: struct stud_node { int num; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ struct stud_node *next; /*指向下个结点的指针*/ }; 单向链表的头尾指针保存在全局变量head和tail中。 输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。 裁判测试程序样例: #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, *tail; void input(); int main() { struct stud_node *p; head = tail = NULL; input(); for ( p = head; p != NULL; p = p->next ) printf("%d %s %d\n", p->num, p->name, p->score); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 1 zhang 78 2 wang 80 3 li 75 4 zhao 85 0 输出样例: 1 zhang 78 2 wang 80 3 li 75 4 zhao 85
时间: 2023-03-09 19:02:57 浏览: 268
#include <stdio.h>
#include <stdlib.h>
struct stud_node { int num; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ struct stud_node *next; /*指向下个结点的指针*/ };
struct stud_node *head, *tail;
void input()
{
struct stud_node *p = (struct stud_node*)malloc(sizeof(struct stud_node));
int num;
scanf("%d", &num);
while (num != 0)
{
p->num = num;
scanf("%s %d", p->name, &(p->score));
p->next = NULL;
if (head == NULL)
head = tail = p;
else
{
tail->next = p;
tail = tail->next;
}
scanf("%d", &num);
}
free(p);
} int main()
{
head = tail = NULL;
input();
return 0;
}答案:我可以提供一份C语言实现将输入的学生成绩组织成单向链表的简单函数的代码。在main函数中,先初始化head和tail指针,然后调用input函数,input函数中使用scanf从输入中获取学生的信息,并将其组织成单向链表,当输入学号为0时结束。
阅读全文