顺序表实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一顺序表的基本操作及其应用
一、需求分析
1.本演示程序实现顺序表的初始化,依次从键盘读入数据,建立顺序表、表中元素的连续追加、求顺序表的长度、检查顺序表是否为空、检查顺序表是否为满、显示顺序表、从顺序表中查找元素、给定元素值找位置、向顺序表中插入元素、从顺序表中删除元素、顺序表的逆序排列等基本操作。
2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令。
3.程序执行命令包过1)顺序表的初始化;2)连续追加元素建表;3)求顺序表长度;4)检查顺序表是否为空;5)检查顺序表是否为满;6)显示顺序表;7)从顺序表中查找元素;8)给定元素值找位置;9)向顺序表中插入元素;10)从顺序表中删除元素;11)逆序
二、概要设计
抽象化数据类型线性表的定义如下:
ADT List{
数据对象:D={ai|ai属于ElemSet,i=1,2,....,n,n>=0}
数据关系:R1={
基本操作:
ListEmpty(L)
初始条件:线性表L已存在。
操作结果:若L为空表,则返回TURE,否则返回FLASE。
ListLength(L)
初始条件:线性表L已存在。
操作结果:返回L中数据元素个数。
ListInsert(&L,i,e)
初始条件:线性表L已存在,1<=i<=ListLength(L)+1。
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。
ListDelete(&L,i,&e)
初始条件:线性表L已存在且非空,1<=i<=ListLength(L)。
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减一。
ListTraverse(L,visit())
初始条件:线性表L已存在。
操作结果:依次对L的每个数据元素调用函数visit()。一旦visit()失败,则操作失败。
}ADT List
主程序
void main(){
初始化;
While(“命令”!=“退出”){
接受命令;
处理命令;
}
}
2.本程序只有两个模块,调用关系简单。
三、详细设计
1.元素类型
#include
#include
#include
#define MAXSIZE 100 /*顺序表存储空间的总分配量*/
typedef int ElemType; /* 定义ElemType为int类型*/
/* 顺序存储类型*/
typedef struct
{ElemType data[MAXSIZE]; /*存放线性表的数组*/
int length; /* length是顺序表的长度*/
}SqList;
SqList L;
2. 初始化顺序表
void SqListInit(SqList &L )
3. 追加顺序表
void ListCreate(SqList &L)
4. 求顺序表长度
int ListLength(SqList L)
5.检查顺序表是否为空
void ListEmpty(SqList L)
6.检查顺序表是否为满
void ListFull(SqList L)
7. 显示遍历顺序表
void ListTraverse(SqList L)
8. 从顺序表中查找元素
void ListGet(SqList L ,int i)
9.从顺序表中查找与给定元素值相同的元素在顺序表中的位置*/
int ListLocate(SqList L, ElemType x)
10. 向顺序表中插入元素
void ListInsert(SqList &L,int i,ElemType x)
11. 从顺序表中删除元素
void ListDelete(SqList L,int i)
12.顺序表逆序排列
void nixu(SqList &L)
四、调试分析
1.此程序全面包含了顺序表的所有功能,覆盖全面,每个功能的实现都设计的非常合理清晰。
2.本次试验使我们得到了一次良好的设计训练。
五、用户手册
1.本程序的运行环境为DOS操作系统。
2.进入演示程序后,即显示文本方式的用户界面:
3.运行此程序后,确定符为“回车符”。按照提示依次进行。
六、测试结果
执行命令‘1’:SqListInit(SqList &L )初始化线性表;
执行命令‘2’:请输入数值个数2 输入第一个数4输入第一个数3
执行命令‘3’:顺序表的长度为2
执行命令‘4’:"顺序表不空
执行命令‘5’:顺序表已满
执行命令‘6’:当前顺序表中的元素为4 3
执行命令‘7’:请输入要查找元素的位置2 顺序表中第2个元素的值为3 执行命令‘8’:请输入要查找的元素的值3 顺序表中2的位置是:2
执行命令‘9’:请输要插入元素的位置和其值:3 5
执行命令‘10’:请输要删除元素的位置:1 1已被删除
七、附录
#include
#include
#define MAXSIZE 100 /*顺序表存储空间的总分配量*/
typedef int ElemType; /* 定义ElemType为int类型*/
/* 顺序存储类型*/
typedef struct
{ElemType data[MAXSIZE]; /*存放线性表的数组*/
int length; /* length是顺序表的长度*/
}SqList;
SqList L;
/* 初始化顺序表*/
void SqListInit(SqList &L )
{ L.length=0;}
/* 追加顺序表*/
void ListCreate(SqList &L)
{ int i,n;
printf("请输入数值个数");
scanf("%d",&n);
for(i=0;i {printf("输入第%d个数",i+1); scanf("%d",&L.data[i]); L.length++;} } /* 求顺序表长度*/ int ListLength(SqList L) {return(L.length);} /* 检查顺序表是否为空*/ void ListEmpty(SqList L) {if(L.length) printf("顺序表不空"); else printf("顺序表为空"); } /*检查顺序表是否为满*/ void ListFull(SqList L) {if(L.length==MAXSIZE) printf("顺序表已满"); else printf("顺序表不满"); } /* 显示遍历顺序表*/ void ListTraverse(SqList L)