建立学生信息链表

来源:互联网 发布:云数据安全解决方案 编辑:程序博客网 时间:2024/06/03 23:45

本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。

函数接口定义:

void input();

该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:

struct stud_node {    int              num;      /*学号*/    char             name[20]; /*姓名*/    int              score;    /*成绩*/    struct stud_node *next;    /*指向下个结点的指针*/};

单向链表的头尾指针保存在全局变量headtail中。

输入为若干个学生的信息(学号、姓名、成绩),当输入学号为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 782 wang 803 li 754 zhao 850

输出样例:

1 zhang 782 wang 803 li 754 zhao 85ANSWER void input(){    struct stud_node *q;    q=(struct stud_node *)malloc(sizeof(struct stud_node));    scanf("%d", &q->num);    while(q->num != 0)    {        scanf("%s %d", q->name, &q->score);        if(head == NULL)        {             head = q;             head->next = NULL;        }       if(tail != NULL)       {           tail->next = q;       }        tail = q;        tail->next = NULL;       q=(struct stud_node *)malloc(sizeof(struct stud_node));        scanf("%d", &q->num);    }}