线性表实验报告:针对链式或顺序存储的线性表实现指定的操作(二份)

  • 格式:doc
  • 大小:220.50 KB
  • 文档页数:19

下载文档原格式

  / 19
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

、格式已经给出,请同学们参考书写。其中,第一项可补充,第二、三项不修改,第四项为可选项,第六项为参考程序,第五、七、八项需自己上机调试程序书写。注意:红色字体为提示内容,大家不要往实验报告上抄。

实验一:线性表的顺序存储结构的表示和实验

——学生成绩管

理系统

一、实验目的:通过上机调试程序,充分理解和掌握有关线性表的定义、实现及操作。

二、实验环境

Win2003/win xp +Visual C++

三、基本要求:利用顺序表来制作一个学生成绩表

1、建立头文件,包含数据类型定义和基本操作。

2、建立程序文件利用顺序表表完成一个班级的一个学期的所有课程的管理:能够增加、删除、修改学生的成绩记录。

四、简要的需求分析与概要设计(本项为可选项,选作时参考课

五、详细的算法描述:

六、实验步骤(以下为参考程序,已经调试运行通过)#include

#include

using namespace std;

const int LISTINITSIZE=100;

const int LISTINCREMENT=10;

struct student

{

char no[20];

char name[20];

int english;

int math;

};

typedef student elemtype;

struct sqlist

{

elemtype *elem;

int length;

int listsize;

int incrementsize;

};

//初始化顺序表l

void initlist(sqlist &l,int maxsize=LISTINITSIZE,int incresize=LISTINCREMENT)

{

l.elem=new elemtype[maxsize];

l.length=0;

l.listsize=maxsize;

l.incrementsize=incresize;

//当线性表空间不足时,进行扩容操作

void increment(sqlist &l)

{

elemtype *a=new elemtype[l.listsize+l.incrementsize];

for(int i=0;i

{

a[i]=l.elem[i];

}

delete []l.elem;

l.elem=a;

l.listsize+=l.incrementsize;

}

//在第i个元素之前插入元素e

void insertlist(sqlist &l,int i,elemtype e)

{

//判断i的合法性1<=i<=l.length+1

if(i<1||i>l.length +1)

{

cout<<"插入位置不合法";

exit(0);

}

//判断顺序表l是否有空闲空间

if(l.length==l.listsize ) increment(l);

//移动元素

for(int j=l.length -1;j>=i-1;j--)

{

l.elem [j+1]=l.elem [j];

}

//插入元素e到第i个元素之前

l.elem [i-1]=e;

//修改顺序表的长度

l.length ++;

}

//输出线性表中指定元素e

void outputelem(elemtype e)

{

cout<<"学号:"<

}

//输出整个线性表

void outputlist(sqlist l)

{

for(int i=0;i

{

outputelem(l.elem [i]);

}

}

//在顺序表l中删除第i个元素,用e带回其值void deletelist(sqlist &l,int i,elemtype &e)

{

//判断i值的合法性1<=i<=l.length

if(i<1 || i>l.length )

{

cout<<"i值不合法!";

exit(0);

}

//取被删的元素置于e中

e=l.elem [i-1];

//移动元素

for(int j=i;j

{

l.elem [j-1]=l.elem [j];

}

//修改顺序表的长度

l.length --;

}

//根据学号查找学生的位序

int locateelembyno(sqlist l,elemtype e) {

for(int i=0;i

{

if(strcmp(l.elem [i].no ,e.no)==0)

return i+1;

}

return 0;

}