顺序表实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014秋学期算法与数据结构
实
验
报
告
书
项目名称:顺序表
指导老师:金菊
项目时间:2014.09.17
项目成员:韦沐晨王亦如
目录
1.需求分析 (3)
1.1分析需求 (3)
1.2 理解需求 (3)
1.3需求概述 (3)
1.4模块函数定义 (3)
2. 总体模块设计 (4)
2.1总体模块需求 (4)
2.2总体模块分析图解 (4)
3. 详细设计 (5)
3.1各模块功能详细分析 (5)
4. 心得体会 (8)
5. 附录(代码) (8)
1.需求分析
1.1分析需求
分析需求就是描述系统的需求,建立系统的模型。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制。因此,顺序表操作系统的需求分析应该是实验小组和用户一起完成的。
1.2 理解需求
顺序表操作系统是关于顺序表的基本操作,例如创建、销毁、判断表空、测量表长、对元素的管理等。
下面是系统所要达到的几条要求:
(1)要求系统记录信息。
(2)要求系统能准确地完成各项功能。
1.3需求概述
顺序表的操作任务较为简单明了,要求系统设计任务及要求如下:
(1)创建顺序表;
(2)顺序表的销毁;
(3)判断表空;
(4)测量表长;
(5)插入元素;
(6)删除元素;
(7)查询元素;
(8)清空顺序表;
(9)取顺序表中指定位置上的元素;
(10)输出顺序表。
1.4模块函数定义
顺序表操作系统有近十种功能,各功能的函数定义如下:
(1)int CreatList_Sq();即创建顺序表;
(2)void DestroyList_Sq();即顺序表的销毁;
(3)void ListEmpty_Sq();即判断表空;
(4)int ListLength_Sq();即测量表长;
(5)int ListInsert_Sq();即插入元素;
(6)int ListDelete_Sq();即删除元素;
(7)int LocateElem_Sq();即查询元素;
(8)int ClearList_Sq();即清空顺序表;
(9)int GetElem_Sq();即取顺序表中指定位置上的元素;
(10)int PrintList_Sq();即输出顺序表。
2.总体模块设计
2.1总体模块需求
需要完成一个完整的顺序表操作系统,具体功能需求详见需求概述。
2.2总体模块分析图解
3.详细设计
3.1各模块功能详细分析
(1)
(2)
(3)
(5)
(6)
(7)
(9)
4.心得体会
本次实验的完成,离不开小组成员的分工合作,更得益于组长的有效领导,使得各成员相互间协调的非常好,大大提高了做实验的效率;书上的顺序表系统相关的算法是C++类型,不能直接在程序中进行套用,需要不断探索和改进才能完成。此外,本次试验,我最大的收获是,意识到了小组分工合作完成实验的重要性。
5.附录(代码)
#include
#include
#define OK 1
#define ERROR -1
#define FALSE -2
#define OVERFLOW 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int Status;
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
SqList L;
void InitList_Sq();
void menu();
int CreatList_Sq();
void DestroyList_Sq();
void ListEmpty_Sq();
int ListLength_Sq();
int ListInsert_Sq();
int ListDelete_Sq();
int LocateElem_Sq();
int ClearList_Sq();
int GetElem_Sq();
int PrintList_Sq();
void main()
{
InitList_Sq();
menu();
}
void InitList_Sq()
{
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem) exit(OVERFLOW);
L.length=0;
L.listsize=LIST_INIT_SIZE;
}
void menu()
{
int a;
system("cls");
printf("***************************************************************************\n");
printf("*******************************顺序表操作系统******************************\n");
printf("***************************************************************************\n");
printf("*** ***\n");
printf("*** 1.创建顺序表 2.销毁顺序表 3.判断顺序表表空 4.测量表长***\n");
printf("*** ***\n");
printf("*** 5.插入元素 6.删除元素7.查询元素8.清空顺序表***\n");
printf("*** ***\n");
printf("*** 9.取顺序表中指定位置的元素10.输出顺序表11.退出***\n");
printf("*** ***\n");
printf("***************************************************************************\n");
printf("***************************************************************************\n");
printf("***************************************************************************\n");
printf("\n\n");
printf("请输入所需选择的操作编号:");
scanf("%d",&a);
switch(a)
{
case 1:CreatList_Sq();break;
case 2:DestroyList_Sq();break;
case 3:ListEmpty_Sq();break;
case 4:ListLength_Sq();break;
case 5:ListInsert_Sq();break;
case 6:ListDelete_Sq();break;
case 7:LocateElem_Sq();break;
case 8:ClearList_Sq();break;
case 9:GetElem_Sq();break;
case 10:PrintList_Sq();break;
case 11:exit(0);break;
default:menu();printf("请在1~11之间选择!");
}
}
int CreatList_Sq()
{