山东大学数据结构课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告
---构件标识系统
学院:软件学院
专业:软件工程
年级 ***
姓名:***
学号:***
一、系统开发平台
1.1题目:构件标识
1.2开发工具:VC++6.0
1.3语言:C++
1.3操作系统:Windows XP 或Windows7系统
二、系统规划
2.1任务陈述:图是由非连通图和连通图构成的,非连通图又由几个独立的子连通图构
成,每个子连通图称为一个构件,本系统需要将非连通图的子连通图进行标记构件,并图形化演示构件标识的过程。
2.2任务目标:
(1)根据所输入数据构造图,形成直观的图形;
(2)运用BFS算法将所输入数据构成的图进行标识,演示标识过程,并将不同构件的顶点标识成不同的颜色;
(3)输入错误弹出对话框提示;
(4)使用多组测试数据证明结果正确。
三、系统定义
3.1系统边界:
3.2系统描述:
本系统是一个实现实际应用性很强的功能的系统。实际生活中,有很多方面需要对一个大的系统按照其相互关联的关系进行小的分类,这需要建立一个模型,本系统抽象其为无向图的模型,实现对子连通图的标识。其中通过输入图中顶点数和边数以及开始遍历的顶点进行图的构造,图形显示无向图,并显示图的构件的个数及各不同构件的元素组成。
四、需求分析
4.1 数据结构需求:输入为图中各顶点和各边(不用逗号和空格隔开,直接连接输入
为一行即可),还需要输入开始进行遍历的顶点;输出为输入数据所构成的无向
图(即是根据BFS算法所输出的不同颜色标识的构件图)和构件的个数以及各
构件的元素组成。
4.2 操作需求:首先输入顶点数,边数和各个顶点各个边以及开始遍历的顶点,输入完
成后点击BFS按钮将所输入的数据生成构件图在下边的图形界面显示,可以点
击上一步或下一步按钮浏览生成过程。
4.3 系统需求说明:
(1)可供11个顶点以及最多55条边存储的空间;
(2)以秒为单位的响应速度;
(3)能对数据输入的各种不同序列做出相应的响应。
五、数据结构设计
5.1逻辑结构:
非线性结构,无向图由顶点和边构成,分为连通图和非连通图,非连通图又由几个小的子连通图构成,进行构件时,分别对图中的子连通图进行标识。
5.2 存储结构:
采用邻接多重链表结构存储数据,如下图所示:
六、算法设计
6.1抽象数据类型
ADT AMLGraph(无向图)
{
数据对象: 具有相同特征的无向图中的顶点集和边;
typedef struct EBox{
VisitIf mark; (访问标记)
int ivex,jvex; (该边依附的两个顶点的位置 )
struct EBox *ilink,*jlink; (分别指向依附这两个顶点的下一条边 ) }EBox;
typedef struct{
VertexType data;
EBox *firstedge; ( 指向第一条依附该顶点的边 ) }VexBox;
typedef struct{
VexBox adjmulist[MAX_VERTEX_NUM];(存储顶点及其指针的数组)
int vexnum,edgenum; ( 无向图的当前顶点数和边数) }AMLGraph; 基本操作:
CreatGragh( CString X , CString Y) 操作结果:构造无向图;
int LocateVex(AMLGraph G,VertexType u)
操作结果:寻找顶点在图中的位置;
VertexType& GetVex(AMLGraph G,int v) 操作结果:返回v
的顶点值
int FirstAdjVex(AMLGraph G,VertexType v) 操作结果:寻找v 的第一个邻接顶点;
int NextAdjVex(AMLGraph G,VertexType v,VertexType w) 操作结果:返回v 的(相对于w 的)下一个邻接顶点; int MarkUnvisited(AMLGraph &G) 操作结果:标记边为unvisited ;
int DeleteVex(AMLGraph &G,VertexType v) 操作结果:删除G 中顶点v 及其相关的边; void DestroyGraph(AMLGraph &G) 操作结果:销毁一个图;
}ADT 抽象数据类型名称
6.2 算法思想流程图
运用邻接多重链表的存储方式,存储图的顶点和边,根据所输入的数据构成所需要的无向图,然后根据BFS 算法,从输入的遍历顶点开始,应用队列和数组实现图的构造;并且在图中的编辑框中显示构件的个数和各构件的组成元素(顶点)。
七、功能模块
7.1功能模块
1.输入数据,包括图的各顶点,各边以及生成图的开始顶点(根据BFS算法开始遍历的顶点);
2图形显示输入的的数据所构成的图,并用不同的颜色标识子连通图,即图的不同构件;
3.显示图的构件的个数和组成各个构件的顶点。
7.2 界面设计
八、测试和运行
1.输入顶点数据abcdeae,弹出窗口如下:
2.输入边为abba,弹出窗口如下:
3.不输入数据,弹出提示对话框如下:
3.输入俩个遍历顶点是,弹出窗口如下:
4.输入顶点:abcde 边为:aa ;开始遍历顶点:a 如下: