本文主要是介绍中国矿业大学徐海学院计算机实践,2013年中国矿业大学徐海学院计算机系《软件认知实践》报告...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2013年中国矿业大学徐海学院计算机系《软件认知实践》报告
(26页)
本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!
9.90 积分
中国矿业大学徐海学院计算机系《软件认知实践》报告姓 名: 学 号: 专 业: 设计题目: 指导教师: 2013年12月30日目 录第1章 题目概述 2第1.1节 题目要求 2第1.2节 主要难点 3第2章 系统流程图 4第3章 数据结构和算法 5第4章 核心代码分析 6第5章 复杂度分析 25参考文献 25第1章 题目概述第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)用邻接矩阵的信息生成邻接表:定义一个邻接表的边信息结构体,将邻接矩阵的边信息转换成邻接表的边信息存储到邻接边的单链表中。第二章 系统流程图main()PrintCreatGraphMVerticesDepthFirstSearchCreatLGraphMDeleteBroadFirstSearchChaZhaoLianTongLVerticesInsertVertexInsertEdgeLInsertVertexLAdjInitiateDeleteVertenDeleteEdgeLInsertEdgeInitiate第3章 数据结构和算法(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; int col; }RowCol; (6)顺序循环队列的结构体定义如下:typedef struct { DataType queue[MaxQueueSize]; int rear; int front; int count;}SeqCQueue;(7)顺序表的结构体定义如下:typedef struct{ DataType list[MaxSize]; int size;}SeqList;第四章 核心代码分析源程序存放在八个文件夹中,文件SeqList.h是顺序表的结构体定义和操作函数,文件SeqCQueue.h是顺序循环队列的结构体定义和操作函数,文件AdjMGraph.h是邻接矩阵存储结构下图的结构体定义和操作函数,文件AdjMGraphCreate.h是邻接矩阵存储结构下图的创建函数,文件AdjLGraph.h是邻接表存储结构下图的结构体定义和操作函数,文件AdjLGraphCreate.h是邻接表存储结构下图的创建函数,文件AdjMGraphTraverse.h是邻接矩阵存储结构下图的深度优先遍历和广度优先遍历操作函数,文件图的基本操作与实现.c是主函数。(1)/* 文件SeqList.h */typedef st 关 键 词: 软件认知实践 2013 年中 矿业大学 学院 计算机系 软件 认知 实践 报告
天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:2013年中国矿业大学徐海学院计算机系《软件认知实践》报告
链接地址: https://www.wenku365.com/p-46763075.html
这篇关于中国矿业大学徐海学院计算机实践,2013年中国矿业大学徐海学院计算机系《软件认知实践》报告...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!