文档介绍:.
实 验 报 告
实验课程:数 据 结 构
实验项目:实验一集合的并交差运算
专 业:计算机科学与技术
班 级:
姓 名:
学 号:
指导教师:
.
.
目 录
一、问题定义及需求分析
(1)实验目的
(2)实验任务
( 3)需求分析
二、概要设计:
(1) 抽象数据类型定义
(2) 主程序流程
(3) 模块关系
三、详细设计
(1) 数据类型及存储结构
(2) 模块设计
四、调试分析
(1) 调试分析
(2) 算法时空分析
(3) 经验体会
五、使用说明
(1) 程序使用说明
六、测试结果
(1) 运行测试结果截图
七、附录
(1) 源代码
.
.
一、问题定义及需求分析
(1)实验目的
设计一个能演示集合的并、交、差运算程序。
(2)实验任务
1)采用顺序表或链表等数据结构。
2)集合的元素限定为数字和小写英文字母。
(3)需求分析:
输入形式为 :外部输入字符串;
输入值限定范围为 :数字和小写英文字母;
输出形式为:字符集;
程序功能 :计算两个集合的交、并、差以及重新输入集合功能;
二、概要设计:
(1)抽象数据类型定义:
线性表
(2)主程序流程:
调用主菜单函数 初始化两个线性表作为集合 给两个集合输入数据 输出集
合数据元素信息 另初始化两个线性表 创建选择功能菜单界面 通过不同选
项调用不同功能函数 在每个功能函数里面加结束选择功能,实现循环调用功能菜单
计算完毕退出程序;
(3)模块关系:
主菜单
差运算 并运算 交运算 新建集合 结束 /返回
结束
三、详细设计
抽象数据类型定义:
typedef struct{
ElemType *elem;
int length;
int listsize;
.
.
}SqList;
存储结构:顺序表;
模块 1- 在顺序表的逻辑为 i 的位置插入新元素 e 的函数;
算法如下:
/** 在顺序表的逻辑为 i 的位置插入新元素 e 的函数 **/
Status ListInsert_Sq(SqList &L,int i,ElemType e)
{
ElemType *newbase,*p,*q;
if(i < 1 || i > + 1) return 0; //i 的合法值为 (1 <= i <= (L) + 1)
if( >= )
{ // 当前储存空间已满,增加分配
newbase = (ElemType *)realloc(,( + LISTINCREMENT) * sizeof(ElemType));
if(!newbase) exit(-1); // 储存分配失败
= n