实验一:线性结构及其应用
一.实验目的
掌握线性表的顺序存储结构和基本操作,重点巩固和体会线性表的插入、合并及应用。
二.实验内容
4个班级一起上数据结构课程,期末考试后,需要分别录入各班每个人的成绩,并按成绩降序存储。这个成绩管理系统需要的功能有:
(1)班级成绩录入----线性表的建立
操作1:初始化空表
操作2:插入一个人的成绩
操作3:查找/定位
(2)综合排名---线性表的合并 L1+L2+L3+L4->L
(3)输出-----线性表的遍历 L1;L2:L3:L4:L:
三. 实验要求
1) 分别用顺序表和链表实现成绩管理系统所有的功能;
2) 每个班的成绩分别存在一个线性表中,即一共需要四个线性表;
3) 成绩需要降序存储。
----分析与设计-------------------------------------------------------------------------------------------
1.问题分析
问题要求存储四个班级每个人的学生成绩,并对学生成绩进行操作及输出。即需要使用一种数据结构来存储大量的有位置关系的数据,并能对存储的数据进行操作和输出。
2.设计思想
每个班的学生成绩要使用一个线性表,还需要一个同时存储四个班学生成绩的线性表,总共需要使用五个线性表,可用结构体构建线性表,并用结构体数组存储五个线性表。使用自己编写的函数完成对线性表的各种操作。
----代码-------------------------------------------------------------------------------------------
#include
#include
/*
定义常量
*/
#define LIST_INIT_SIZE 50
#define LIST_INCREMENT 5
/*
定义线性表
*/
typedef struct ElemType
{
int id;
int score;
char name[100];
}ElemType;
typedef struct MyList
{
ElemType *data;
int length;
int listsize;
}MyList;
/*
线性表的操作函数
*/
int InitList(MyList *L);
int DestroyList(MyList *L);
int ClearList(MyList *L);
int ListEmpty(MyList L);
int ListLength(MyList L);
int GetElem(MyList L,int i,ElemType *e);//是否需要使用多重指针?
int LocateElem(MyList L,ElemType e,int (*MyCompare)());
int PriorElem(MyList L,ElemType cur_e,ElemType *pre_e);//same problem
int NextElem(MyList L,ElemType pre_e,ElemType *cur_e);
int ListInsert(MyList *L,int i,ElemType e);
int ListDelete(MyList *L,int i,ElemType *e);
//课本内定义的基本操作
int SortList(MyList *L,int (*MyCompare)());
//自定义的基本操作