图的遍历_课程设计
数据结构课程设计文档-图的遍历
2012级计算机科学与技术专业《数据结构》课程设计文档设计题目图的遍历班级12网路工程组长学号3121101124 姓名庄俊坤学号3121101135 姓名林捷学号3121101136 姓名周柏煌学号3121101160 姓名赵云鹏学号3111101119 姓名谢国印完成日期2014.1前言图遍历又称图的遍历,属于数据结构中的内容。
指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。
图的遍历操作和树的遍历操作功能相似。
图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上。
一、设计题目图遍历的演示二、实验目的:本课程设计是《数据结构》课程的组成之一,也是它的继续和延伸。
采用集中学习方法,分组完成一个小型应用系统。
开设本课程的目的是使学生通过参加小型软件的开发过程,进一步了解并掌握数据结构与算法的设计方法,具备初步的分析和设计能力;同时培养学生的创新能力和创新意识,锻炼他们的团队协作精神。
三、问题描述:由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:①在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点。
②在非连通图中,从一个顶点出发,只能够访问它所在的连通分量上的所有顶点,因此,还需考虑如何选取下一个出发点以访问图中其余的连通分量。
③在图结构中,如果有回路存在,那么一个顶点被访问之后,有可能沿回路又回到该顶点。
④在图结构中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,存在如何选取下一个要访问的顶点的问题。
四、功能要求(1)以邻接表作为存储结构;(2)由用户指定遍历的起点;(3)实现深度优先和广度优先遍历;(4)输出深度优先遍历和广度优先遍历的结点访问序列;(5)并给出相应生成树的边集。
(6)给出至少3组测试数据,其中图顶点的个数大于10小于30。
较高要求:建立深度和广度生成树,按凹入表或树形打印生成树。
数据结构课程设计-图的遍历和构建
摘要图(Graph)是一种复杂的非线性结构。
图可以分为无向图、有向图。
若将图的每条边都赋上一个权,则称这种带权图网络。
在人工智能、工程、数学、物理、化学、计算机科学等领域中,图结构有着广泛的应用。
在图结构中,对结点(图中常称为顶点)的前趋和后继个数都是不加以限制的,即结点之间的关系是任意的。
图中任意两个结点之间都可能相关。
图有两种常用的存储表示方法:邻接矩阵表示法和邻接表表示法。
在一个图中,邻接矩阵表示是唯一的,但邻接表表示不唯一。
在表示的过程中还可以实现图的遍历(深度优先遍历和广度优先遍历)及求图中顶点的度。
当然对于图的广度优先遍历还利用了队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)来实现。
这不仅让我们巩固了之前学的队列的基本操作,还懂得了将算法相互融合和运用。
目录第一章课程设计目的..................................................................................... 错误!未定义书签。
第二章课程设计内容和要求....................................................................... 错误!未定义书签。
2.1课程设计内容.................................................................................. 错误!未定义书签。
2.1.1图的邻接矩阵的建立与输出ﻩ错误!未定义书签。
2.1.2图的邻接表的建立与输出............................................... 错误!未定义书签。
2.1.3图的遍历的实现.................................................................... 错误!未定义书签。
图的遍历课程设计报告参考模板
广东工业大学华立学院课程设计(论文)课程名称数据结构题目名称图的遍历学生学部(系)专业班级学号学生姓名指导教师二○○八年七月八日广东工业大学华立学院课程设计(论文)任务书一、课程设计(论文)的内容图的遍历任务:实现图的深度优先, 广度优先遍历算法,并输出原图结构及遍历结果。
二、课程设计(论文)的要求与数据(1)函数功能要划分好(2)总体设计应画流程图(3)程序要加必要的注释(4)要提供程序测试方案三、课程设计(论文)应完成的工作(1)按照课程设计要求完成报告,具体内容包括:①具体任务;②软件环境;③算法设计思想及流程图;④.源代码;⑤调试分析及算法的改进设想;⑥运行结果;⑦总结;⑧参考文献等。
(2)课程设计报告可采用统一规范的格式单面打印,并装订成册上交。
(3)以班级为单位刻一张光盘上交。
四、课程设计(论文)进程安排五、应收集的资料及主要参考文献[1]数据结构—使用C语言(第3版)朱战立编,西安交通大学出版社。
[2]四川中外科技文化交流中心组编(王松主编).Visual C++ 6.0程序设计与开发指南.北京:高等教育出版社,2004[3]朱晴婷,黄海鹰,陈莲君.Visual C++程序设计──基础与实例分析.北京:清华大学出版社,2004发出任务书日期:2008 年5 月27 日指导教师签名:计划完成日期:2008 年7 月8 日教学单位责任人签章:目录任务书 (1)目录 (4)1).具体任务 (5)2).软件环境 (5)3).算法设计思想及流程图 (5)4).源代码: (6)5).调试分析: (11)6).运行结果 (11)7).参考文献 (11)8).收获及体会 (12)一、具体任务1.实现图的深度优先,广度优先遍历算法,并输出原图结构及遍历结果。
2.通过这次的程序设计,加深对图的遍历的认识,加强编程的能力。
二、运行环境(软、硬件环境)硬件环境:CPU 2.0Hz硬盘160G内存1G软件环境:Windows XpMicrosoft Visual C++ 6.0三、算法设计思想及流程图四、源代码#define M 20#include <stdio.h>#include <stdlib.h>#include <malloc.h>/*定义图*/typedef struct{int V[M];int R[M][M];int vexnum;}Graph;/*创建图*/void creatgraph(Graph *g,int n){int i,j,r1,r2;g->vexnum=n;/*顶点用i表示*/for(i=1;i<=n;i++){g->V[i]=i;}/*初始化R*/for(i=1;i<=n;i++)for(j=1;j<=n;j++){g->R[i][j]=0;}/*输入R*/printf("请按如下形式(2,4)输入R(0,0 END):\n"); scanf("%d,%d",&r1,&r2);while(r1!=0&&r2!=0){g->R[r1][r2]=1;g->R[r2][r1]=1;scanf("%d,%d",&r1,&r2);}}/*打印图的邻接矩阵*/void printgraph(Graph *g){int i,j;for(i=1;i<=g->vexnum;i++){ for(j=1;j<=g->vexnum;j++){printf("%2d ",g->R[i][j]);}printf("\n");}}/*全局变量:访问标志数组*/int visited[M];/*访问顶点*/void visitvex(Graph *g,int vex){printf("%d ",g->V[vex]);}/*获取第一个未被访问的邻接节点*/int firstadjvex(Graph *g,int vex){int w,i;for(i=1;i<=g->vexnum;i++){if(g->R[vex][i]==1&&visited[i]==0){w=i;break;}else{w=0;}}return w;}/*获取下一个未被访问的邻接节点(深度遍历)*/int nextadjvex(Graph *g,int vex,int w){int t;t=firstadjvex(g,w);return t;}/*深度递归遍历*/void dfs(Graph *g,int vex){int w;visited[vex]=1;visitvex(g,vex);for(w=firstadjvex(g,vex);w>0;w=nextadjvex(g,vex,w)) if(!visited[w]){dfs(g,w);}void dfstraverse(Graph *g){int i;for(i=1;i<=g->vexnum;i++)visited[i]=0;for(i=1;i<=g->vexnum;i++)if(!visited[i]){dfs(g,i);}}/*定义队列*/typedef struct{int V[M];int front;int rear;}Queue;/*初始化队列*/initqueue(Queue *q){q->front=0;q->rear=0;}/*判断队列是否为空*/int quempty(Queue *q){if(q->front==q->rear){return 0;}else{return 1;}}/*入队操作*/enqueue(Queue *q,int e){if((q->rear+1)%M==q->front){printf("The queue is overflow!\n"); return 0;}else{q->V[q->rear]=e;q->rear=(q->rear+1)%M;return 1;}}/*出队操作*/dequeue(Queue *q){int t;if(q->front==q->rear){printf("The queue is empty!\n"); return 0;else{t=q->V[q->front];q->front=(q->front+1)%M;return t;}}/*广度遍历*/void BESTraverse(Graph *g){int i;Queue *q=(Queue *)malloc(sizeof(Queue));for(i=1;i<=g->vexnum;i++){visited[i]=0;}initqueue(q);for(i=1;i<=g->vexnum;i++){if(!visited[i]){visited[i]=1;visitvex(g,g->V[i]);enqueue(q,g->V[i]);while(!quempty(q)){int u,w;u=dequeue(q);for(w=firstadjvex(g,u);w>0;w=nextadjvex(g,u,w)){if(!visited[w]){visited[w]=1;visitvex(g,w);enqueue(q,w);}}}}}}/*主程序*/main(){int n;Graph *g=(Graph *)malloc(sizeof(Graph));char menu;printf("请输入节点的个数:\n");scanf("%d",&n);creatgraph(g,n);printf("This is the linjiejuzhen of graph:\n");printgraph(g);input:printf("Please input b or d or q ,Breadth_first: b Depth_first: d quit: q\n");while((menu=getchar())=='\n');if(menu=='b')printf("Breadth_first:\n");BESTraverse(g);printf("\n");goto input;}else if(menu=='d'){printf("Depth_first:\n");dfstraverse(g);printf("\n");goto input;}else if(menu=='q'){exit(0);}else{printf("Input error!Please input b or d!\n");}}五、调试分析及算法的改进设想1.由于对图的性质和算法掌握的比较好,所以在程序运行是比较顺利,没有遇到大的问题。
数据结构课程设计--图的遍历
1.引言数据结构是计算机科学与技术专业的一门核心专业基础课程,是一门理论性强、思维抽象、难度较大的课程。
在软件工程专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用。
通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力。
我认为学习数据结构的最终目的是为了获得求解问题的能力。
对于现实世界中的问题,我们应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。
图是一种非常重要的数据结构,在《数据结构》中也占着相当大的比重。
这个学期的数据结构课程中,我们学习了很多图的存储结构,有邻接矩阵、邻接表、十字链表等。
其中邻接矩阵和邻接表为图的主要存储结构。
图的邻接矩阵存储结构的主要特点是把图的边信息存储在一个矩阵中,是一种静态存储方法。
图的邻接表存储结构是一种顺序存储与链式存储相结合的存储方法。
从空间性能上说,图越稀疏邻接表的空间效率相应的越高。
从时间性能上来说,邻接表在图的算法中时间代价较邻接矩阵要低。
本课程设计主要是实现使用邻接表存储结构存储一个图,并在所存储的图中实现深度优先和广度优先遍历以及其链表结构的输出。
2.需求分析2.1 原理当图比较稀疏时,邻接表存储是最佳的选择。
并且在存储图的时候邻接表要比邻接矩阵节省时间。
在图存储在系统中后,我们有时还需要对图进行一些操作,如需要添加一个顶点,修改一个顶点,或者删除一个顶点,而这些操作都需要一图的深度优先及广度优先遍历为基础。
本系统将构建一个图,图的结点存储的是int型数据。
运行本系统可对该图进行链式结构输出、深度优先及广度优先遍历。
控制方法如下:表2-1 控制键的功能2.2 要求(1)建立基于邻接表的图;(2)对图进行遍历;(3)输出遍历结果;2.3 运行环境(1)WINDOWS 7系统(2)C++ 编译环境2.4 开发工具C++语言3.数据结构分析本课程设计是针对于图的,程序中采用邻接表进行数据存储。
Python图的遍历课程设计
Python图的遍历课程设计一、教学目标本课程旨在通过Python编程语言,让学生掌握图的遍历算法,培养学生的编程思维能力和问题解决能力。
具体目标如下:1.理解图的基本概念和相关术语。
2.掌握图的邻接表和邻接矩阵表示方法。
3.学习图的遍历算法,包括深度优先搜索和广度优先搜索。
4.能够使用Python语言实现图的邻接表和邻接矩阵。
5.能够使用Python语言实现深度优先搜索和广度优先搜索算法。
6.能够分析并解决图的相关问题,如最短路径、最小生成树等。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,通过小组合作完成项目。
2.培养学生的问题解决能力和创新思维,鼓励学生自主探索和尝试新的解题方法。
二、教学内容本课程的教学内容主要包括图的基本概念、图的表示方法、图的遍历算法等。
具体安排如下:第1课时:图的基本概念和术语。
第2课时:图的邻接表和邻接矩阵表示方法。
第3课时:深度优先搜索算法。
第4课时:广度优先搜索算法。
第5课时:图的应用问题,如最短路径、最小生成树等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解和演示,让学生掌握图的基本概念和遍历算法。
2.讨论法:通过小组讨论和分享,培养学生的团队合作意识和问题解决能力。
3.案例分析法:通过分析实际案例,让学生理解和应用图的遍历算法解决实际问题。
4.实验法:通过编程实验,让学生动手实现图的表示和遍历算法,培养学生的编程能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Python编程:从入门到实践》2.参考书:《数据结构与算法分析:Python描述》3.多媒体资料:PPT课件、教学视频、在线编程练习平台4.实验设备:计算机、网络环境、编程软件(如Python IDE)五、教学评估本课程的教学评估将采用多元化的方式,以全面客观地评价学生的学习成果。
数据结构课程设计-图的遍历
数据结构课程设计-图的遍历1. 介绍图是一种非线性数据结构,它由节点和边组成。
在图中,节点可以表示任何对象,而边则表示节点之间的关系。
图可以用于表示许多现实世界中的问题,例如社交网络、电路板和道路网络。
图遍历是图算法的基础,它是指从图的一个特定节点出发,按照一定顺序访问图中所有节点的过程。
在这篇文章中,我们将讨论基本的图遍历算法,包括深度优先遍历(DFS)和广度优先遍历(BFS)。
2. 深度优先遍历 (DFS)深度优先遍历是一种用于遍历或搜索树或图的算法。
在深度优先遍历中,我们先访问一个顶点,然后沿着这个顶点下一条未访问的边走到下一个顶点,直到遇到一个没有未访问的邻居为止。
然后我们回溯到之前的节点,并访问该节点的另一个未访问的邻居。
我们重复这个过程,直到所有的节点都被访问。
在深度优先遍历中,每个节点仅被访问一次。
深度优先遍历有两种实现方式:递归实现和迭代实现。
递归实现方式是深度优先遍历的传统实现方式。
当对一个节点进行深度优先遍历时,我们首先访问这个节点,然后递归地遍历它的每一个邻居节点。
这个过程会一直持续到当前节点的所有邻居节点都被访问到为止。
下面是递归实现方式的伪代码:void DFS(Node node){visit(node);for (Node neighbor : node.neighbors) {if (!neighbor.visited) {DFS(neighbor);}}}另一种实现方式是使用栈来模拟递归过程,称为迭代实现方式。
在这种实现方式中,我们使用深度优先搜索的方式逐步遍历节点。
在遍历过程中,我们将每个节点的邻居节点加入到栈中,以便后续处理。
下面是迭代实现方式的伪代码:void DFS(Node node){Stack stack = new Stack();stack.push(node);while (!stack.isEmpty()) {Node currentNode = stack.pop();if (!currentNode.visited) {visit(currentNode);for (Node neighbor : currentNode.neighbors) {stack.push(neighbor);}}}}3. 广度优先遍历 (BFS)广度优先遍历是另一种图遍历算法。
图遍历的演示课程设计报告.
合肥学院计算机科学与技术系课程设计报告20 11~20 12 学年第二学期课程数据结构与算法课程设计名称图遍历的演示学生姓名汪青松学号1004031010专业班级网络工程1班指导教师吕刚、陈圣兵2011 年 6 月图遍历的演示一、问题分析和任务定义很多涉及图上操作的算法都是以图的遍历操作为基础的。
试写一个程序,演示在连通的无向图上访问全部结点的操作。
将每个结点看做一个地名,如合肥。
然后任选国内的城市,起点未合肥,忽略城市间的里程。
设图的结点20-30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。
通过输入图的全部边(存于数据文件中,从文件读写)输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。
注意,生成树的边是有向边,端点顺序不能颠倒。
二、数据结构的选择和概要设计城市与城市之间的关系使没有方向的,无向图采用邻近多重表来实现,主要要表示无向图中的各个结点和边,在多重表中边是采用两个结点来表示的。
在邻接表中Edgenode表示邻接表中的结点类型,其中含有访问标记mark,一条边所依附的两个结点的序号ivex和jvex,以及分别指向依附于ivex和jvex 的顶点边的链域ilink和jlink。
其中,邻接表中的表头结点用Vexnode表示,包含了顶点信息data和指向第一个边结点的firstedge。
用AMLGraph表示整个无向图,包含了图的顶点vexnum和边数edgenum。
结点坐标信息:struct loc //结点坐标信息{int v; //结点序号int x; //x坐标int y; //y坐标};边结点数据结构:struct Edgenode //边结点{int mark;//标志域,指示该边是否被访问过(0:没有1:有)int ivex,jvex;//该边关联的两个顶点的位置Edgenode *ilink,*jlink;//分别指向关联这两个顶点的下一条边};顶点结点:struct Vexnode //顶点结点{int data; //顶点名称,用数字表示城市Edgenode *firstedge;//指向第一条关联该结点的边};AMLGraph类:三、详细设计和编码程序主体部分主要包括两大部分,一是遍历算法部分;另一部分是对演示图的处理。
数据结构课程设计--图的遍历
数据结构课程设计--图的遍历内蒙古科技大学本科生课程设计论文题目:图的遍历2013年07月05日内蒙古科技大学课程设计任务书目录第一章图的遍历原理51.1总述61.2深度优先遍历61.3广度优先遍历6第二章需求分析7第三章总体设计 (7)3.1程序设计思路 (7)3.2 功能视图 (8)第四章类的设计 (8)4.1 GraphUDN类的设计 (9)4.2 Queue类的设计 (10)第五章详细设计 (10)5.1 工程视图和类视图 (10)5.2 主要算法的流程图 (11)5.2.1 主函数的流程图 (11)5.2.2 深搜流程图 (12)5.2.3 广搜流程图 (13)第六章测试 (14)6.1 菜单界面 (15)6.2 创建无向网 (15)6.3 输出图 (16)6.4 输出顶点V的第一个邻接点 (16)6.5 输出顶点V的下一个邻接点 (17)6.6 深搜 (17)6.7 广搜 (18)第七章总结 (18)附录:程序代码 (20)参考文献 (29)第一章图的遍历原理1.1总述图的遍历:从图中某一顶点出发访遍图中其余顶点,且使得每一个顶点仅被访问一次。
这一过程就叫做图的遍历。
1.2深度优先遍历深度优先遍历类似于树的先根遍历,是树的先根遍历的推广。
假如初始状态是图中所有顶点未曾被访问,则深度优先遍历可从图中某个顶点V出发,访问此顶点,然后依次从V的未被访问的邻接点出发深度优先遍历图,直到图中所有和V有路径相通的顶点都被访问到;若图中此时尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直到图中所有顶点都被访问到为止。
以图1.1为例,假如从顶点V1出发进行搜索,在访问了顶点V1之后,选择邻接点V2。
因为V2未曾访问,则从V2出发进行搜索。
以此类推,接着从V4,V8,V5出发进行搜索。
在访问了V5之后,由于V5的邻接点都已被访问,则搜索回到V8。
由于同样的理由,搜索回到V4,V2直到V1,此时由于V1的另一个邻接点未被访问,则搜索又从V1到V3,再继续进行下去。
Python图的遍历课程设计
Python图的遍历课程设计一、课程目标知识目标:1. 让学生掌握图的遍历基本概念,理解深度优先搜索(DFS)与广度优先搜索(BFS)的算法原理。
2. 能够运用Python编程语言实现图的邻接表表示方法。
3. 能够运用DFS和BFS算法对给定的图进行遍历,并输出遍历结果。
技能目标:1. 培养学生分析问题、解决问题的能力,能够将实际问题转化为图的遍历问题。
2. 培养学生的编程实践能力,能够独立编写和调试图的遍历程序。
3. 培养学生的团队协作能力,能够在小组讨论中发表自己的见解,共同解决问题。
情感态度价值观目标:1. 激发学生对计算机科学的兴趣,提高对编程的热爱和信心。
2. 培养学生面对困难时勇于挑战、积极进取的精神。
3. 培养学生的创新意识,鼓励学生尝试不同的算法解决问题。
课程性质:本课程为Python编程的进阶课程,以图的遍历为主题,旨在巩固学生已学的编程知识,提高学生的编程能力。
学生特点:学生已具备基本的Python编程能力,有一定的逻辑思维能力,但对复杂算法的理解和应用尚需引导。
教学要求:注重理论与实践相结合,以案例驱动教学,引导学生自主探究、合作学习,提高学生的编程实践能力。
在教学过程中,关注学生的个体差异,提供个性化的指导和支持。
二、教学内容1. 图的基本概念:图的结构定义,图的邻接矩阵与邻接表表示方法,图的遍历意义。
相关教材章节:第二章 图论基础,第1-3节。
2. 深度优先搜索(DFS)算法:DFS算法原理,递归实现与非递归实现,DFS 算法的应用。
相关教材章节:第二章 图论基础,第4节。
3. 广度优先搜索(BFS)算法:BFS算法原理,队列的应用,BFS算法的应用。
相关教材章节:第二章 图论基础,第5节。
4. Python实现图的遍历:图的邻接表表示,DFS和BFS算法的Python实现,遍历结果的输出。
实践项目:编写Python程序,实现对给定图的DFS和BFS遍历。
5. 图遍历应用案例分析:分析实际问题,将问题转化为图的遍历问题,运用所学算法解决问题。
图的广度遍历(算法与数据结构课程设计)
1 问题描述图是一种较线性表和树更为复杂的数据结构。
在图形结构中,节点间的关系可以是任意的,图中任意两个数据元素之间都可以相关。
由此,图的应用极为广泛。
现在邻接矩阵和邻接表的存储结构下,完成图的广度遍历。
对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索遍历。
画出搜索顺序示意图。
2 分析与解决问题2.1 基本要求(1) 选择合适的存储结构完成图的建立;(2) 建立图的邻接矩阵,能按矩阵方式输出图,并在此基础上,完成图的广度遍历,输出遍历序列;(3) 建立图的邻接表,并在此基础上,完成图的广度遍历,输出遍历序列;2.2 测试数据图1-1 测试图2.3 算法思想(1) 邻接矩阵顶点向量的存储。
用两个数组分别存储数据(定点)的信息和数据元素之间的关系(边或弧)的信息。
(2) 邻接表邻接表是图的一种链式存储结构。
在邻接表中,对图中每个定点建立一个单链表,第i个单链表中的节点表示依附于定点vi的边。
每个节点由3个域组成,其中邻接点域(adjvex)指示与定点vi邻接的点在图中的位置,链域(nextarc)指示下一条边或弧的节点;数据域(info)存储和边或弧相关的信息,如权值等。
每个链表上附设一个头节点。
在表头节点中,除了设有链域(firstarc)指向链表中第一个节点之外,还设有存储定点vi的名或其他有关信息的数据域(data)。
(3)图的广度遍历广度优先遍历类似于树的按层次遍历过程。
假设从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先与“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。
若此时图中尚有顶点未被访问,则另选图中一个曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
图的遍历课程设计
数据结构课程设计报告题目:图的遍历学生姓名:刘再科学号:0213专业班级:计科10102班同组姓名: 蔡双指导教师:孙叶枫设计时间: 2011年下学期第18周目录一.前言1. 课程设计的目的 (3)2.课程设计的基本要求 (4)二.课程设计内容 (5)三.系统(项目)设计 (6)四.源程序 (8)五.程序的调试及测试结果 (18)六.小结 (21)七.参考文献 (21)一.前言1、课程设计的目的《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。
通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
通过此次课程设计主要达到以下目的:⏹了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;⏹初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;⏹提高综合运用所学的理论知识和方法独立分析和解决问题的能力;⏹训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
2、课程设计的基本要求1.问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?2.逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;3.详细设计:定义相应的存储结构并写出各函数的伪码算法。
数据结构课程设计--图的遍历
数据结构课程设计--图的遍历-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN1.引言数据结构是计算机科学与技术专业的一门核心专业基础课程,是一门理论性强、思维抽象、难度较大的课程。
在软件工程专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用。
通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力。
我认为学习数据结构的最终目的是为了获得求解问题的能力。
对于现实世界中的问题,我们应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。
图是一种非常重要的数据结构,在《数据结构》中也占着相当大的比重。
这个学期的数据结构课程中,我们学习了很多图的存储结构,有邻接矩阵、邻接表、十字链表等。
其中邻接矩阵和邻接表为图的主要存储结构。
图的邻接矩阵存储结构的主要特点是把图的边信息存储在一个矩阵中,是一种静态存储方法。
图的邻接表存储结构是一种顺序存储与链式存储相结合的存储方法。
从空间性能上说,图越稀疏邻接表的空间效率相应的越高。
从时间性能上来说,邻接表在图的算法中时间代价较邻接矩阵要低。
本课程设计主要是实现使用邻接表存储结构存储一个图,并在所存储的图中实现深度优先和广度优先遍历以及其链表结构的输出。
2.需求分析原理当图比较稀疏时,邻接表存储是最佳的选择。
并且在存储图的时候邻接表要比邻接矩阵节省时间。
在图存储在系统中后,我们有时还需要对图进行一些操作,如需要添加一个顶点,修改一个顶点,或者删除一个顶点,而这些操作都需要一图的深度优先及广度优先遍历为基础。
本系统将构建一个图,图的结点存储的是int型数据。
运行本系统可对该图进行链式结构输出、深度优先及广度优先遍历。
控制方法如下:表2-1 控制键的功能要求(1)建立基于邻接表的图;(2)对图进行遍历;(3)输出遍历结果;运行环境(1)WINDOWS 7系统(2)C++ 编译环境开发工具C++语言3.数据结构分析本课程设计是针对于图的,程序中采用邻接表进行数据存储。
数据结构课程设计---图的遍历
数据结构课程设计课程名称: 数据结构课程代码:题目: 图的遍历年级/专业/班: 09级计算机科学与技术专业二班学生姓名:学号:指导老师:开题时间: 2010-12-20完成时间: 2010-12-31目录摘要 (3)Abstract (3)一、引言 (4)二、设计目的与任务 (4)三、设计方案与实施 (5)1、总体设计 (5)2、详细设计 (7)3、程序清单 (10)4、程序调试与体会 (17)5、运行结果(截图) (17)四、结论 (21)五、致谢 (21)六、参考文献 (22)摘要随着计算机科技发展的异常迅速,计算机技术也越来越为人们所利用,计算机已深入到人类社会的各个领域,在21世纪计算机技术势必将得到更大的发展。
数据结构是计算机程序设计的重要理论技术基础,是一门实践性非常强的课程,它不仅是计算机学科的核心课程,而且已经成为其他理工专业的热门选修课。
如果说高级语言程序设计课程对学生进行了结构化程序设计的初步训练,那么数据结构课程就是要培养其数据抽象能力。
掌握好数据结构很有利于对计算机程序的设计。
图是一种较线性表和树更为复杂的数据结构,本设计是对图进行深度和广度的遍历。
关键词:图遍历递归邻接矩阵AbstractAlong with the development of computer technology, computer technology and unusually quick for people place more and more use, computer is deeply into every field of human society, computer technology in the 21st century which will be more big development. Data structure is the important theory computer programming technology base, is a kind of very strong practicality course of computer science, it is not only the core curriculum, and has become the hottest other tech professional elective course. If a high level language program design course for students had a structured programming the preliminary training, then the data structure course is to develop its data abstractions ability. Good mastery of data structure is very beneficial to the design of a computer program.Figure is a kind of more linear list and trees more complex data structure, the design is the graph depth and breadth of the traverse.Key words:Figure Traversal Recursion The adjacency matrix《数据结构》课程设计图的遍历设计一、引言数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。
图的优先遍历课程设计
图的优先遍历课程设计一、课程目标知识目标:1. 学生能理解图的优先遍历的基本概念,掌握其算法原理和应用场景。
2. 学生能运用所学算法,解决实际问题,如最短路径、拓扑排序等。
3. 学生了解优先遍历与其他遍历方法(如深度优先遍历、广度优先遍历)的区别和联系。
技能目标:1. 学生能运用编程语言(如Python)实现图的优先遍历算法。
2. 学生能通过实际案例分析,设计并优化图的优先遍历解决方案。
3. 学生具备分析问题、解决问题和团队协作的能力。
情感态度价值观目标:1. 学生培养对数据结构与算法的兴趣和热情,增强学习主动性和积极性。
2. 学生通过团队协作,培养沟通能力、团队意识和合作精神。
3. 学生在解决实际问题的过程中,体会算法的实用价值,提高对计算机科学的认识和兴趣。
本课程针对高中年级学生,结合学生已有知识水平和认知特点,注重理论与实践相结合,培养学生分析问题、解决问题的能力。
课程目标明确,分解为具体的学习成果,便于教学设计和评估。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,提高课堂互动效果。
二、教学内容1. 图的基本概念:图的定义、顶点与边、有向图与无向图、连通图与连通分量。
2. 优先遍历算法原理:优先遍历的概念、优先队列的作用、优先遍历与深度优先遍历的关系。
3. 最短路径问题:Dijkstra算法原理、算法实现步骤、实际案例分析。
4. 拓扑排序:拓扑排序的概念、有向无环图(DAG)的判定、拓扑排序的算法实现。
5. 优先遍历的应用场景:如关键路径、任务调度等。
6. 编程实践:使用Python等编程语言实现优先遍历相关算法。
教学内容依据课程目标,结合教材相关章节,进行科学、系统的组织。
教学大纲安排如下:第一课时:图的基本概念及优先遍历原理介绍。
第二课时:Dijkstra算法及其实现。
第三课时:拓扑排序及其应用。
第四课时:优先遍历在其他场景的应用。
第五课时:编程实践,巩固所学知识。
教学内容注重理论与实践相结合,让学生在掌握基本概念和算法原理的基础上,通过实际案例和编程实践,提高解决问题的能力。
课程设计报告-图的遍历
目录一、课题的主要功能 (2)1.1设计内容 (2)1.2对课程设计功能的需求分析 (2)二、课题的功能模块的划分 (2)2.1模块划分 (2)2.2系统的概要设计 (3)三、主要功能的实现 (4)3.1算法思想 (4)1.图的邻接矩阵的建立 (4)2.图的遍历的实现 (4)3.2数据结构 (4)3.3主函数流程图 (5)3.4深度优先遍历流程图 (6)3.5深度优先遍历递归 (7)3.6深度优先遍历流程图 (9)3.7广度优先遍历递归流程图 (10)四、程序调试 (11)4.1程序的调试分析 (11)4.2程序的测试结果 (11)五、总结 (15)六、附件 (16)6.1源程序一、课题的主要功能1.1设计内容演示图的深度优先, 广度优先遍历过程,并输出原图结构及遍历结果。
要求图的结点数不能少于6个。
可以由系统随机生成图,也可以由用户手动输入图。
报告中要写出画图的思路;画出图的结构,有兴趣的同学可以进一步改进图的效果。
1.2对课程设计功能的需求分析图的遍历并不需要是一个过于复杂的工作环境,一般来说:最合适的才是最好的。
软件设计必须符合我们使用实际情况的需要。
根据要求,图的遍历主要功能如下:1.用户可以随时建立一个有向图或无向图;2.用户可以根据自己的需要,对图进行深度遍历或广度遍历;3.用户可以根据自己的需要对图进行修改;4.在整个程序中,用户可以不断的按照不同的方式对图进行遍历,若不继续,用户也可以随时跳出程序,同时,如果用户输入的序号错误,程序会提示用户重新输入序号;二、课题的功能模块的划分2.1模块划分1.队列的初始化、进队、出队、队列空、队列满的函数void InitQueue(CirQueue *Q) //初始化队列int QueueEmpty(CirQueue *Q)//队列是否为空int QueueFull(CirQueue *Q)//队列满Void EnQueue(CirQueue *Q,int x)//将队员进队int DeQueue(CirQueue *Q)//将队员出队2.创建图的函数void CreateMGraph(MGraph *G)//根据用户需要创建一个图3.图的深度优先遍历递归void DFSM(MGraph *G,int i)/*含有输出已访问的顶点的语句*/4.图的广度优先遍历递归void BFSM(MGraph *G,int k) /*含有输出已访问的顶点的语句*/5.深度优先遍历void DFSTraverseM(MGraph *G)/*调用DFSM函数*/6.广度优先遍历void BFSTraverseM(MGraph *G) /*调用BFSM函数*/7.主函数main() /*包含一些调用和控制语句*/2.2系统的概要设计三、主要功能的实现3.1算法思想本课题所采用的是邻接矩阵的方式存储图,实现图的深度、广度两种遍历,并将每种遍历结果输出来。
图的遍历_课程设计
图的遍历课程设计题目图的遍历教学院计算机专业班级姓名指导教师2011 年12 月31 日课程设计任务书2010 ~2011 学年第1 学期学生姓名:专业班级:指导教师:工作部门:一、课程设计题目图的遍历二、课程设计内容(含技术指标)1.显示图的邻接矩阵, 图的邻接表, 深度优先遍历, 广度优先遍历, 最小生成树PRIM算法, 最小生成树KRUSCAL算法,图的连通分量。
2.当用户选择的功能错误时,系统会输出相应的提示。
3.通过图操作的实现,把一些实际生活中的具体的事物抽象出来三、进度安排1.初步完成总体设计,搭好框架;2.完成最低要求:两种必须都要实现,写出画图的思路;3.进一步要求:画出图的结构,有兴趣的同学可以进一步改进图的效果。
四、基本要求1.界面友好,函数功能要划分好2.程序要加必要的注释3.要提供程序测试方案目录一概述 (1)1.问题描述 (1)2.系统分析 (1)3.课程设计(论文)进程安排 (1)二.总体设计方案 (2)1.整体设计思路 (2)2.算法的整体思路 (3)3.工作内容 (3)三详细设计 (4)1.详细设计思路及算法 (4)2.程序流程图 (11)四程序的调试与运行结果说明 (12)1.运行结果 (12)五.课程设计总结 (15)参考文献 (16)附录 A 原程序清单 (16)数据结构课程设计成绩评定表 (30)一概述1.问题描述1)函数功能要划分好2)总体设计应画流程图3)程序要加必要的注释4)要提供程序测试方案2.系统分析1)掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风3.课程设计(论文)进程安排二.总体设计方案1.整体设计思路图的邻接矩阵:对于一个具有n个顶点的图,可以使用n*n的矩阵(二维数组)来表示它们间的邻接关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图的遍历课程设计题目图的遍历教学院计算机专业班级姓名指导教师201X 年12 月31 日课程设计任务书2010 ~2011 学年第1 学期学生姓名:专业班级:指导教师:工作部门:一、课程设计题目图的遍历二、课程设计内容(含技术指标)1.显示图的邻接矩阵, 图的邻接表, 深度优先遍历, 广度优先遍历, 最小生成树PRIM算法, 最小生成树KRUSCAL算法,图的连通分量。
2.当用户选择的功能错误时,系统会输出相应的提示。
3.通过图操作的实现,把一些实际生活中的具体的事物抽象出来三、进度安排1.初步完成总体设计,搭好框架;2.完成最低要求:两种必须都要实现,写出画图的思路;3.进一步要求:画出图的结构,有兴趣的同学可以进一步改进图的效果。
四、基本要求1.界面友好,函数功能要划分好2.程序要加必要的注释3.要提供程序测试方案目录一概述 (1)1.问题描述 (1)2.系统分析 (1)3.课程设计(论文)进程安排 (1)二.总体设计方案 (2)1.整体设计思路 (2)2.算法的整体思路 (3)3.工作内容 (3)三详细设计 (4)1.详细设计思路及算法 (4)2.程序流程图 (11)四程序的调试与运行结果说明 (12)1.运行结果 (12)五.课程设计总结 (15)参考文献 (16)附录 A 原程序清单 (16)数据结构课程设计成绩评定表 (30)一概述1.问题描述1)函数功能要划分好2)总体设计应画流程图3)程序要加必要的注释4)要提供程序测试方案2.系统分析1)掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风3.课程设计(论文)进程安排二.总体设计方案1.整体设计思路图的邻接矩阵:对于一个具有n个顶点的图,可以使用n*n的矩阵(二维数组)来表示它们间的邻接关系。
图的邻接表:邻接表由表头结点和表结点两部分组成,其中图中每个顶点均对应一个存储在数组中的表头结点。
如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。
深度优先遍历的递归算法思想:假定以图中某个顶点V i为出发点,首先访问出发点,然后选择一个V i的未访问过的邻接点V j,以V j为新的出发点继续进行深度优先搜索,直至图中所有顶点都被访问过。
1)访问结点V并标记结点V为已访问;2)查找结点V的第一个邻接结点W;3)若结点W的临界结点W存在,则继续执行,否则算法结束;4)若结点W尚未被访问,则递归访问结点W;5)查找结点V的W临界结点的下一个临界结点W ,转到步骤(3)。
广度优先遍历算法:从图的某一顶点V i出发,访问此顶点后,依次访问V i的各个未曾访问过的邻接点,然后分别从这些邻接点出发,直至图中所有已有已被访问的顶点的邻接点都被访问到。
1)访问初始结点V并标记结点V为已访问;2)结点V入队列;3)当队列非空时则继续执行,否则算法结束;4)出队列取得队头结点U;5)查找结点U的第一个邻接结点W;6)若结点U的邻接结点W不存在,则转到步骤(3),否则循环执行下列步骤:a)(6.1)若结点W尚未被访问,则访问结点W并标记结点W为已访问;b)(6.2)结点W入队;c)(6.3)查找结点U的W邻接结点的下一个邻接结点W,转到步骤(6)。
普利姆算法思想:令集合U的初值为U={u0},集合T的初值为T={}。
从所有结点u属于U和结点v属于V\U的带权边中选出具有最小权值的边(u,v),将结点v加入集合U中,将边(u,v)加入集合T中。
如此不断反复,当U=V时,最小生成树便构造完毕。
克鲁斯卡尔算法思想:设无向连通带权图G=(V,E),其中V为结点的集合,E为边的集合。
设带权图G 的最小生成树T由结点集合和边的集合构成,其初值为T=(v,{}),即初始时最小生成树T只由带权图G中的结点集合组成,各结点之间没有一条边。
这样,最小生成树T中的各个结点各自构成一个连通分量。
然后,按照边的权值递增的顺序考察带权图G中边集合E的各条边,若被考察的边的两个结点属于T的两个不同的连通分量,则将此边加入懂啊最小生成树T中,同时,把两个连通分量连接为一个连通分量;若被考察的边的两个结点属于T的同一个连通分量,则将此边舍去。
如此下去,当T中的连通分量个数为1时,T中的该连通分量即为带权图G的一棵最小生成树。
连通分量:非连通图的每一个连通部分。
2.算法的整体思路本系统能分别用邻接矩阵存储结构和邻接表存储结构构造无向图,然后在此无向图中能实现深度优先遍历,广度优先遍历,最小生成树和连通分量的算法。
3.工作内容1.显示图的邻接矩阵, 图的邻接表, 深度优先遍历, 广度优先遍历, 最小生成树PRIM算法, 最小生成树KRUSCAL算法,图的连通分量。
2.当用户选择的功能错误时,系统会输出相应的提示。
3.通过图操作的实现,把一些实际生活中的具体的事物抽象出来。
三详细设计1.详细设计思路及算法图1-1 无向图1.程序中所用变量的定义:#include <iostream>#include <malloc.h>using namespace std;#define int_max 10000#define inf 9999#define max 202.邻接矩阵的定义:typedef struct ArcCell{int adj;char *info;}ArcCell,AdjMatrix[20][20];typedef struct {char vexs[20]; AdjMatrix arcs; int vexnum,arcnum; }MGraph_L;A 0 50 600 0 0 0 B 500 0 65 40 0 0 C 60 0 0 52 0 0 45 D 0 65 52 0 50 30 0 E 0 40 0 50 0 70 0 F 0 0 0 30 70 0 80 G 0 0 45 0 0 80 0图1-2 邻接矩阵3.邻接表:表1-1 邻接表4.深度优先遍历:void adjprint(algraph gra)5.广度优先遍历:void bfstra(algraph gra)6.最小生成树PRIM算法:7.最小生成树KRUSCAL算法:2.程序流程图四程序的调试与运行结果说明1.运行结果图2-1 输入顶点数图2-2 输入权值无向图创建成功图2-3 菜单图2-4 邻接矩阵图2-5 邻接表图2-6 深广度优先遍历图2-7 最小生成树图2-8 连通分量五.课程设计总结课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
对于我们学生来讲,此次课程设计是为了让我们训练自己的实际设计能力,通过设计实践,去真正获得此项目管理和团队协作等方面的基本训练和工作经验。
通过课程设计的一系列训练,我们能提高如何综合运用所学知识解决实际问题的能力,以及获得此项目管理和团队协作等等众多方面的具体经验,增强对相关课程具体内容的理解和掌握能力,培养对整体课程知识综合运用和融会贯通能力。
通过这近一个星期的数据结构课程设计实践,我学到了很多东西。
本次课程设计对我来说正是一个提高自己能力的机会,我好好的抓住机会,努力做好每一步,完善每一步。
自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高。
同时也学会了解决问题的方法。
此次课程设计也让我认识到必须培养严谨的态度。
自己在编程时经常因为一些类似于“少了分号”的小错误而导致错误,不够认真细致,这给自己带来了许多麻烦。
编程是一件十分严谨的事情,容不得马虎。
所以在今后自己一定要培养严谨的态度。
我想这不仅是对于程序设计,做任何事都应如此。
在实践过程中,我和组员分工合作,勇于提出问题,解决难题,在实践中,我遇到了许多困难,但都一一克服了。
最终我圆满的完成此次课程设计,学到了很多东西。
同时,程序还存在着一些缺陷,就是不能输出原图,存在一些局限性,不过我会继续努力思考,完善程序,做到最好。
此次试验,老师对我的指导是至关重要的,在此我非常感谢老师,从她那我学到了很多有关c语言的知识,为以后的学习打下了一定的基础。
总的来说,本次课程设计,不仅我的知识面有所提高,另外我的综合素质也有所提高,,比如说:团队精神、提问能力、思考能力等等。
这次课程设计为我以后更好的学习和使用c语言打下了基础。
参考文献[1]数据结构—使用C语言(第3版)朱战立编,西安交通大学出版社。
[2] Visual C++程序设计──基础与实例分析.北京:清华大学出版社,2004附录A 原程序清单#include <iostream>#include <malloc.h>using namespace std;#define int_max 10000#define inf 9999#define max 20//…………………………………………邻接矩阵定义……………………typedef struct ArcCell{int adj;char *info;}ArcCell,AdjMatrix[20][20];typedef struct{char vexs[20];AdjMatrix arcs;int vexnum,arcnum;}MGraph_L;//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^int localvex(MGraph_L G,char v)//返回V的位置{int i=0;while(G.vexs[i]!=v){++i;}return i;}int creatMGraph_L(MGraph_L &G)//创建图用邻接矩阵表示{char v1,v2;int i,j,w;cout<<"…………创建无向图…………"<<endl;<<"请输入图G顶点和弧的个数:(4 6)不包括“()”"<<endl;cin>>G.vexnum>>G.arcnum;for(i=0;i!=G.vexnum;++i){cout<<"输入顶点"<<i<<endl;cin>>G.vexs[i];}for(i=0;i!=G.vexnum;++i)for(j=0;j!=G.vexnum;++j){G.arcs[i][j].adj=int_max;G.arcs[i][j].info=NULL;}for(int k=0;k!=G.arcnum;++k){cout<<"输入一条边依附的顶点和权:(a b 3)不包括()"<<endl;cin>>v1>>v2>>w;//输入一条边依附的两点及权值i=localvex(G,v1);//确定顶点V1和V2在图中的位置j=localvex(G,v2);G.arcs[i][j].adj=w;G.arcs[j][i].adj=w;}cout<<"图G邻接矩阵创建成功!"<<endl;return G.vexnum;}void ljjzprint(MGraph_L G){int i,j;for(i=0;i!=G.vexnum;++i){for(j=0;j!=G.vexnum;++j)cout<<G.arcs[i][j].adj<<" ";cout<<endl;}}int visited[max];//访问标记。