6-1 学生信息链表建立与查找 (15 分)
给出一张学生数据表,如下图所示。请采用链式存储结构建立该学生数据表并输出。

函数接口定义:
struct Student* read_data(); //建立学生信息链表 
void output_data(struct Student* head); //输出学生信息 
char* find_data(int no, struct Student* head); //查找指定学号的学生姓名 
其中 no为学生学号, head为链表的头指针。
裁判测试程序样例:
#include "stdio.h" #include "string.h" #include "stdlib.h"
//链式存储结构结点类型
 struct Student
 {
     int no;        //学号
     char name[30];    //姓名
     char gendre[30];    //性别
     char clazz[30];    //班号
     struct Student* next;//指向下一个结点的指针
 };
struct Student* read_data();            //建立学生信息链表
 void output_data(struct Student* head);        //输出学生信息
 char* find_data(int no, struct Student* head);    //查找指定学号的学生姓名
int main(int argc, char const *argv[])
 {
     struct Student* head;
     head = read_data();
     output_data(head);
     int no;
     scanf("%d", &no);
     char* pStr = find_data(no, head);
     puts(pStr);
    return 0;
 }
/* 请在这里填写答案 */
  
输入样例:
1	张斌	男	9901
8	刘丽	女	9902
34	李英	女	9901
20	陈华	男	9902
12	王奇	男	9901
26	董强	男	9902
5	王萍	女	9901
8
输出样例:
1	张斌	男	9901
8	刘丽	女	9902
34	李英	女	9901
20	陈华	男	9902
12	王奇	男	9901
26	董强	男	9902
5	王萍	女	9901
刘丽
作者
李廷元
单位
中国民用航空飞行学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C (gcc)
struct Student* read_data()
{
    int i;
    struct Student *p=NULL,*head=NULL,*r=NULL;
    head=(struct Student*)malloc(sizeof(*head));
    scanf("%d",&head->no);
    scanf("%s",head->name);
    scanf("%s",head->gendre);
    scanf("%s",head->clazz); 
    head->next=NULL;
    r=head;
    for(i=0;i<6;i++)///遍历输入
    {
        p=(struct Student*)malloc(sizeof(*p));
        p->next=NULL;
        scanf("%d",&p->no);
        scanf("%s",p->name);
        scanf("%s",p->gendre);
        scanf("%s",p->clazz);
        r->next=p;
        r=p;
    }
    return head;
}
void output_data(struct Student* head)
{
    int j;
    for(j=0;j<7;j++)//遍历输出
    {
    	
        printf("%d\t",head->no);
        printf("%s\t",head->name);
        printf("%s\t",head->gendre);
        printf("%s\n",head->clazz);
        head=head->next;
    }
}
char* find_data(int no, struct Student* head)
{
    int j;
    for(j=0;j<7;j++)
    {
        if(head->no==no)//是否找到该学号
        {
            return head->name;
        }
        else
        head=head->next;
    }
}










