顺序表实验报告
顺序表实验报告
计算机与信息技术学院综合性、设计性实验报告
课程名称数据结构指导教师李四
学号姓名16083240XX 张三
项目名称顺序表结构的操作实验类型综合性/设计性
实验时间2017.09.26 实验地点216机房
一、实验目的
(1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。
二、实验仪器或设备
(1)硬件设备:CPU为Pentium 4以上的计算机,内存2G以上
(2)配置软件:Microsoft Windows 7与VC++6.0
三、总体设计(设计原理、设计方案及流程等)
设计原理:顺序表的存储结构的特点是在逻辑上相邻的数据元素,其物理次序也是相邻的。
设计方案:采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序的各个功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入可以处理非法数值的代码。
设计流程:
1.引入所需的头文件;
2.定义状态值;
3.写入顺序表的各种操作的代码;
4.写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判
断输入值是否非法,从而执行相应的程序。
四、实验步骤(包括主要步骤、代码分析等)
#include
#include
#include
#include
#include
#include
#include
floor(),ceil( ),abs( )
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status; // Status是函数的类型,
//其值是函数结果状态代码,如OK等
typedef int ElemType;
#define MAXSIZE 100 //最大长
度
typedef struct
{
E lemType *elem; //指向数据元素的基地址
int length; //线性表的当前长度
} SqList;
//初始化线性表
算法步骤:
1.为顺序表L动态分配一个预定义大小的数组空间,使elem指向这做段空间的基地址。
2.将表的当前长度设为0。
Status InitList_Sq(SqList &L)
{ //构造一个空的顺序表L
L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间
if(!L.elem) exit(OVERFLOW); //存储分配失败
p rintf("空顺序表创建成功!\n");
L.length=0; //空表长度为0
return OK;
}
//取值
算法步骤:
1.判断指定的位置序号i值是否合理(1≤i
≤L.length),若不合理,则返回ERROR。
2.若i值合理,则将第i个数据元素L.elem[i-1]赋给参数e,通过e返回第i
个数据元素的传值。
Status GetElem_Sq(SqList L, int i, ElemType &e)
{
i f (i<1||i>L.length) return ERROR; //判断i值是否合理,若不合理,返回ERROR e=L.elem[i-1]; //第i-1的单
元存储着第i个数据
return OK;
}
//查找
算法步骤:
1.从前一个元素起,依次和e相比较,若找
到与e相等的元素L.elem[i],则查找成功,