《数据结构》实验报告
实验一、顺序表的应用
专 业 信息管理与信息系统 班 级 091 学 号 09125030139 学生姓名 易纬郴 指导老师 李辉
河南科技大学国际教育学院
2009年10月25日
一、实验目的
本次实验的目的在于通过实验实践活动,让学生熟悉掌握线性表的各种知识点
以及其生活实际中的应用,其中一下知识点最为重要:
ADT List{
数据对象:D={ai|ai属于ElemSet,i=1,2,……,n,n>=0} 数据关系:R1={|ai-1,ai属于D,i=1,2,……,n} 基本操作:
I: 构造一个线性表L InitList(&L)
II:在线性表L第i位置之前插入新数据e,线性表的长度加一 ListInsert(&L,i,e)
III: 在线性表L第i位置删除数据e,线性表的长度减一 ListDelete(&L,i,&e)
IV:查找线性表L中第i个元素值e (1<=i<=ListLength(L)) GetElem(L,i,&e) ………………}
以及线性表的清空,判定是否为空,表的长度,元素位置的判定,遍历等等一些常规操作,要求学生们了解的知识点,通过这次实验实践活动让其了解对各种数据类型有不同的处理操作,以及增进同学们对以后学习其他数据结构类型的信心!
让学生把课堂上的知识运用到现实生活中去,做到学以致用,这样才能勾起学生们学习这些知识的兴趣,才会把这门课学好!
二、实验内容
本次实验要求验证以班级学生信息作为管理对象,实现顺序表各种基本运算的C语言程序。
通过本次实验练习,要求学生对C语言各个知识点进行复习领会,学习如何利用C语言建立班级学生信息线性表的顺序存储结构,如何使用顺序表的基本操作算法,实现对班级学生信息的管理,包括学生信息的插入、学生信息的删除、学生信息的查询和学生信息线性表的输出。
三、完成情况
#include
typedef struct{
char num[8];/*学号*/ char name[9];/*姓名*/
- 1 -
char gender[3];/*性别*/ int score;/*成绩*/ }DataType;
typedef struct {
DataType stu[MAXSIZE]; int length; }sequenlist;
int menu_select() {
int sn;
printf(\学生信息管理系统\\n\
printf(\ printf(\学生信息线性表的建立\\n\ printf(\插 入 学 生 信 息\\n\ printf(\查 询 学 生 信 息\\n\ printf(\删 除 学 生 信 息\\n\ printf(\输 出 所有学生信息\\n\ printf(\退 出 管 理 系 统\\n\
printf(\ printf(\请选择0-5:\\n\ for(;;) {
scanf(\ if (sn<0 || sn>5)
printf(\输入错误,重选0-5\\n\ else
break; }
return sn; }
void createList(sequenlist *L) {
int n,i;
printf(\有几位学生?请输入:\\n\ fflush(stdin); scanf(\
printf(\以下请输入这%d位学生的信息:\\n\ for(i=0;i printf(\第%d位学生:\ - 2 - printf(\学号(8) 姓名(8) 性别 成绩\\n\ fflush(stdin); scanf(\.score); } L->length=n; } void printList(sequenlist *L) { int i; printf(\ printf(\for(i=0;i printf(\er,L->stu[i].score); printf(\} int insert(sequenlist *L,DataType *student,int i) { int j; if(L->length==MAXSIZE) { printf(\ return 0; } else if((i<0)||(i>L->length)) { printf(\ return 0; } else { for(j=L->length-1;j>=i;j--) { strcpy(L->stu[j+1].num,L->stu[j].num); strcpy(L->stu[j+1].name,L->stu[j].name); strcpy(L->stu[j+1].gender,L->stu[j].gender); L->stu[j+1].score=L->stu[j].score; } - 3 - strcpy(L->stu[i].num,student->num); strcpy(L->stu[i].name,student->name); strcpy(L->stu[i].gender,student->gender); L->stu[i].score=student->score; L->length=L->length+1; } return 1; } int findList(sequenlist *L) { char num[8]; char name[9]; int i=0,xz; printf(\ printf(\、按学号查询\\n\ printf(\、按姓名查询\\n\ printf(\ printf(\请选择: \ fflush(stdin); scanf(\ if (xz==1) { printf(\请输入要查找学生的学号:\ scanf(\ for(i=0;i if(strcmp(L->stu[i].num,num)==0) return i; } } else if (xz==2) { printf(\请输入要查找学生的姓名:\ scanf(\ for(i=0;i if(strcmp(L->stu[i].name,name)==0) return i; } } return -1;/*如果没找到,返回-1。否则直接返回,不会执行本句*/ - 4 -