0
点赞
收藏
分享

微信扫一扫

PTA数据结构作业记录

少_游 2022-03-19 阅读 74

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",
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",
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;
}
}
举报

相关推荐

0 条评论