- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图基本操作与实现课程设计报告
中国矿业大学徐海学院计算机系
《软件认知实践》报告
姓 名: 学 号:
专 业:
设计题目:
指导教师:
2013年12月30日
目 录
第1章 题目概述 2
第1.1节 题目要求 2
第1.2节 主要难点 3
第2章 系统流程图 4
第3章 数据结构和算法 5
第4章 核心代码分析 6
第5章 复杂度分析 25
参考文献 25
题目概述
第1.1节 题目要求
(1)自选存储结构,输入含n个顶点(用字符表示顶点)和e条边的图G;
(2)求每个顶点的度,输出结果;
(3)指定任意顶点x为初始顶点,对图G作DFS遍历,输出DFS顶点序列(提示:使用一个栈实现DFS);
(4)指定任意顶点x为初始顶点,对图G作BFS遍历,输出BFS顶点序列(提示:使用一个队列实现BFS);
(5)输入顶点x,查找图G:若存在含x的顶点,则删除该结点及与之相关连的边,并作DFS遍历(执行操作3);否则输出信 息“无x”;
(6)判断图G是否是连通图,输出信息“YES”/“NO”;
(7)如果选用的存储结构是邻接矩阵,则用邻接矩阵的信息生成图G的邻接表,即复制图G,然再执行操作(2);反之亦然。
第1.2节 主要难点
(1)自选存储结构创建一个图:通过用户从键盘敲入的两个数值分别确定图的顶点数和边数,选择邻接矩阵存储结构将图的结点信息存储在一个顺序表中,图的边信息存储在一个二维数组中。
(2)求每个顶点的度:
1.邻接矩阵存储结构下求每个顶点的度:利用图的邻接矩阵,每个顶点所在行和所在列的边的权值如果存在则该顶点的度+1,依次算出每个顶点的度,并且记录在一个数组中输出。
2.邻接表存储结构下求每个顶点的度:定义一个邻接边指针循环指向顶点的邻接边单链表头结点,当结点不空时,该顶点的出度+1,邻接边弧头结点的入度+1,依次求出每个顶点的出度和入度之和就为该顶点的度。
(3)图的深度优先遍历:采取邻接矩阵结构,指定任意顶点x为初始顶点
1.访问结点v并标记结点v已访问;
2.查找结点v的第一个邻接结点w;
3.若结点v的邻接结点w存在,则继续执行,否则算法结束;
4.若结点w尚未被访问,则递归访问结点w;
5.查找结点v的w邻接结点的下一个邻接结点w,转到步骤3。
(4)图的广度优先遍历:采取邻接矩阵结构,指定任意顶点x为初始顶点,利用顺序循环队列以保持访问过的结点的顺序
1.首先访问初始结点v并标记结点v为已访问;
2.结点v入队列;
3.当队列非空时则继续执行,否则算法结束;
4.出队列取得队头结点u;
5.查找u的第一个邻接结点w;
6.若u的邻接结点w不存在则转到步骤3,否则循环执行下列步骤:
6.1若结点w尚未被访问,则访问结点w并标记结点w为已访问;
6.2结点w入队列;
6.3查找结点u的w邻接结点的下一个邻接结点w,转到步骤6 。
(5)判断有向图的强连通性:采取邻接表结构,在图中寻找一个包含所有顶点且首尾相连的环,若这样的环存在,则该图为强连通图,否则不为强连通图。
(6)用邻接矩阵的信息生成邻接表:定义一个邻接表的边信息结构体,将邻接矩阵的边信息转换成邻接表的边信息存储到邻接边的单链表中。
第二章 系统流程图
数据结构和算法
(1)有向图顶点的数据类型DataType 定义如下:
typedef int DataType ;
(2)邻接矩阵存储结构下图的结构体定义如下:
typedef struct
{
SeqList Vertices;
int edge[MaxVertices][MaxVertices];
int numOfEdges;
}AdjMGraph;
(3)邻接矩阵存储结构下图的边信息结构体定义如下:
typedef struct
{
int row;
int col;
int weight;
}RowColWeight;
(4)邻接表存储结构下图的结构体定义如下:
typedef struct Node
{
int dest;
struct Node *next;
}Edge;
typedef struct
{
DataType data;
int sorce;
Edge *adj;
}AdjLHeight;
typedef struct
{
AdjLHeight a[MaxVertices];
int numOfVerts;
int numOfEdges;
}AdjLGraph;
(5)邻接表存储结构下图的边信息结构体定义如下:
typedef struct
{
int row;
文档评论(0)