文档介绍:石家庄经济学院
实验报告
学院: 数理学院
专业: 数学与应用数学
班级: _班
学号: XXXXXXXX
姓名: XXXXXX
信息工程学院计算机实验中心制
实验题目:线性表的顺序存储结构和实现
一、 实验内容
石家庄经济学院
实验报告
学院: 数理学院
专业: 数学与应用数学
班级: _班
学号: XXXXXXXX
姓名: XXXXXX
信息工程学院计算机实验中心制
实验题目:线性表的顺序存储结构和实现
一、 实验内容
熟悉C语言的上机环境,掌握C语言的基本结构。
会定义线性表的顺序存储结构。
熟悉对顺序表的一些基本操作(建表、插入、删除等)和具体的函数定义。
二、 、实握顺序存储结构的特点
掌握顺序存储结构的常见算法
3、 掌握顺序存储结构的特点,了解、掌握并实现顺序表的常用的基本算法。
三、 实验的内容及完成情况
需求分析
线性表的抽象数据类型ADT的描述及实现。
本实验实现使用Visualc++。具体实现要求:
完成对线性表顺序存储结构的表示和实现。
实现对线性表的建立和初始化。
实现对线性表插入和删除部分元素。
概要设计
抽象数据类型线性表的定义:
ADT{
数据对象:D=(ailai^ElemSet,i=1,2, ,n,n>0)
数据关系:R1={<ai-i,ai>lai-i,aieD,i=2,......,n}
基本操作:
InitList_sq(&L)
操作结果:构造一个空的线性表L。
ListInsert_sq(&L,i,e)
初始条件:线性表L已存在,+1。
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。
ListDelete_sq(&L,i,&e)
初始条件:线性表L已存在且非空,。
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。
input()
}ADT;
详细设计
抽象数据类型线性表顺序存储结构的表示和实现
〃线性表结构类型
#defineLIST_INIT_SIZE 100//线性表存储空间的初始分量
#defineLISTINCREMENT 10//线性表存储空间的分配增量
typedefstruct{
elemtype *elem;//存储空间基址
int length;//当前线性表的长度
int
listsize;//当前分配的存储容量(以sizeof(elemtype)为单位)
}sqlist;
〃建立线性表
StatusInitList_sq(sqlist&L)
{〃构造一个空的线性表
=(elemtype*)malloc(LIST_INIT_SIZE*sizeof(elemtype));
if(!) exit(OVERFLOW);//存储分配失败
=0; //空表长度为0
=LIST_INIT_SIZE;//初始存储容量
returnOK;
}//InitList_sq
〃在线性表指定位置插入指定元素
StatusListInsert_sq(sqlist&L,inti,inte)
{//在线性表L中第i个位置前插入新的元素e
//i的合法值1<=i<=+1
if(i<1||i>+1)returnERROR;//i值不合法
if(>=)//当存储空间已满,增加分配
{
newbase=(int*)realloc(,(+LISTINCREMENT)*sizeof(int));
if(!newbase)exit(OVERFLOW);//存储分配失败
=newbase; //新基址
+=LISTINCREMENT;//增加存储容量
}
q=&([i-1]); //q为插入位置
for(p=&([-1]);p>=q;--p)*(p+1)=*p;//插入位置及之后的元素后移
*q=e;//插入e
++;//表长增加1
returnOK;
}//ListInsert_sq
〃在线性表指定位置删除元素
StatusListDelete_sq(sqlist&L,inti,int&e)
{//在顺序表L中删除第i个元素,并用e返回其值
//i的合法值为1v=iv=
if(i<1lli>)returnERROR;//i值