顺序表实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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={|ai-1,ai属于D,i=2,.....n}

基本操作:

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)

相关文档
最新文档