(2)由有向图G的邻接矩阵 邻接表产生邻接表并...

热门搜索:
您现在的位置是: &
> 1、 图的存储结构的定义和图的创建
图的种类有:有向图、无向图、有向网、无向网。
图的存储结构可采用:邻接矩阵、邻接表。
要求:分别给出邻接矩阵和邻接表在某一种图上的创建算法
2、 图的遍历:
1、 图的存储结构的定义和图的创建
图的种类有:有向图、无向图、有向网、无向网。
图的存储结构可采用:邻接矩阵、邻接表。
要求:分别给出邻接矩阵和邻接表在某一种图上的创建算法
2、 图的遍历:
资 源 简 介
1、 图的存储结构的定义和图的创建
图的种类有:有向图、无向图、有向网、无向网。
图的存储结构可采用:邻接矩阵、邻接表。
要求:分别给出邻接矩阵和邻接表在某一种图上的创建算法
2、 图的遍历:非递归的深度优先搜索算法、广度优先搜索算法。
3、 图的深度遍历的应用:求无向连通图中的关节点(教材P177-178,算法7.10和7.11)
4、 图的广度遍历的应用:给定图G,输出从顶点v0到其余每个顶点的最短路径,要求输出各路径中的顶点信息。
VIP 专区(每个包含40-100个资源包)
您 可 能 感 兴 趣 的
相 关 代 码
相 关 资 源
该 用 户 还 上 传
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员数据结构,图的邻接矩阵创建,邻接矩阵与邻接表的交换,两种表的输出,过程用C++实现
数据结构,图的邻接矩阵创建,邻接矩阵与邻接表的交换,两种表的输出,过程用C++实现
发布时间: 6:26:39
编辑:www.fx114.net
本篇文章主要介绍了"数据结构,图的邻接矩阵创建,邻接矩阵与邻接表的交换,两种表的输出,过程用C++实现",主要涉及到数据结构,图的邻接矩阵创建,邻接矩阵与邻接表的交换,两种表的输出,过程用C++实现方面的内容,对于数据结构,图的邻接矩阵创建,邻接矩阵与邻接表的交换,两种表的输出,过程用C++实现感兴趣的同学可以参考一下。
编写一个程序algo8-1.cpp,实现不带权图和带权图的邻接矩阵与邻接表的互相
转换算法、输出邻接矩阵与邻接表的算法,并在此基础上设计一个程序exp8-1.cpp
实现如下功能:
1)建立如图有向图G的邻接矩阵,并输出;
2)由有向图G的邻接矩阵产生邻接表,并输出;
3)再由2)邻接表产生对应的邻接矩阵,并输出。
#include&iostream&
#define MAX 6
class VertexType //顶点类型
//顶点编号
class MGraph
int edges[MAX][MAX]; //邻接矩阵的变数组,使用int类型记录,主要记录为0、1,带权的则为其权值
int n,e; // 顶点数,边数
VertexType vexs[MAX]; //存放顶点信息
MGraph():n(0),e(0){
for (int x = 0 ; x & MAX ; x++)
for(int y = 0 ; y & MAX ; y ++)
edges[x][y] = 0;
for (int i =0; i & MAX; i++)
this -&vexs[i].info = -1;
};// 完整的图邻接矩阵类型
class ArcNode
ArcNode():adjvex(0),nextarc(NULL){}
//该边的终点编号
//边的信息
class VNode //起点信息
VNode():data(0),firstarc(NULL){}
void Reset()
adjvex = -1;
firstarc = NULL;
//起点信息
typedef VNode AdjList[MAX] ; //eg:&typedef char Line[81]; //Line是char[81] (而不是说char是line[81])&
class ALGraph
ALGraph():n (0),e (0){ //邻接表初始化
for(int i = 0;i & MAX ; i ++)
adjlist[i].Reset();
}; //完整的图邻接表的类型
void CreatMGraph(MGraph * G) //图的构造函数,不带权带向
cout && &输入图的顶点个数: &;
cin && G -&
cout && &输入图的边数:&;
cin && G -&
for(x = 0 ; x & G -& x++)
for ( y = 0 ; y & G -& y++)
G-&edges[x][y] = 0; //默认设定为 0
for (int i = 0 ; i & G -& i++)
cout && &请输入第& && (i+1) && &条边的前后节点。& &&
cout && &出发点:& ;
cout && &接收点:& ;
/* cout && &输入权值:&;
G -&edges[x][y] = 1;
void OutputMGraph(MGraph * G)
cout && &----------现在输出邻接矩阵------------& &&
for(int i = 0 ; i & G -& i ++)
for (int j = 0 ; j & G -& j ++)
cout && G -&edges[i][j] && & & ;
cout && &--------------------------------------& &&
void OutputALGraph(ALGraph * G) //输出邻接表
cout && &--------------现在输出邻接表---------------& &&
for(int i = 0; i & G -& i ++)
if(G -&adjlist[i].adjvex == -1) //不存在顶点时退出循环
cout && G -&adjlist[i].
while(G -&adjlist [i].firstarc != NULL)
ArcNode * temp = G -&adjlist[i].
while(temp != NULL)
cout && &----&& && temp-&
if(temp -&nextarc == NULL)
temp = temp -&
}if(temp -&nextarc == NULL) //再跳出
cout && &---------------邻接表输出结束---------------& &&
void MatToList(MGraph * g,ALGraph *&G)
G = new ALGraph();
for(int i = 0; i & g -&i ++) //初始化邻接表,使其写上顶点编号
G -&adjlist[i].adjvex = // 0 1 2 3 4 5 ,n的值应该为6
for(int i = 0;i & g -&n;i++)
for(int j = 0; j & g -&n;j++)
if(g -&edges[i][j] != 0) //不带权的有向或无向邻接矩阵转邻接表
{ p = new ArcNode();
p -&adjvex =
p -&nextarc = G -&adjlist[i].
G -&adjlist[i].firstarc =
G -&n = g -&n;
G -&e = g -&e;
void ListToMat(ALGraph * g,MGraph * &G) //邻接表转邻接矩阵
for( i =0; i& g -&n;i++)
p = g -&adjlist[i].
while(p != NULL)
G -&edges[i][p -&adjvex] = 1;
G -&e = g -&e;
G -&n = g -&n;
int main()
MGraph * G = new MGraph();
CreatMGraph(G);
OutputMGraph(G);
ALGraph * J;
MatToList(G,J);
OutputALGraph(J);
MGraph * g = new MGraph();
ListToMat(J,g);
OutputMGraph(g);
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:&>&&>&&>&&>&假设图中数据元素类型是字符型,请采用邻接矩阵或邻接表实现图的以下基本操作: (1)构造图(包括有向图、有向网、无向图、无向网); (2)根据深度优先遍历图。
假设图中数据元素类型是字符型,请采用邻接矩阵或邻接表实现图的以下基本操作: (1)构造图(包括有向图、有向网、无向图、无向网); (2)根据深度优先遍历图。
上传大小:117KB
1、图和网的区别:网是带权值的图
有向和无向的区别:有向直接标出谁指向谁,无向是有向的特例,&v1,v2&有弧,说明&v2,v1&也有弧。
① 确定顶点数,弧数,是否有权值
② 输入每个顶点,弧&弧尾,弧头&,权值
③ 若是无向,则需实现弧&v2,v1&与&v1,v2&的同置
2、图的深度优先搜索遍历类似于树的先根遍历,沿着初始顶点出发的一条路径,尽可能深入地前进,直到所有顶点被访问完;用visited[]来存储顶点的访问情况,初始时所有顶点皆为未访问FALSE,访问一个顶点之后就被标记为已访问TRUE。...展开收缩
综合评分:5(1位用户评分)
所需积分:2
下载次数:26
审核通过送C币
创建者:fireblue1990
创建者:ljheee
课程推荐相关知识库
上传者其他资源上传者专辑
课程资源热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
假设图中数据元素类型是字符型,请采用邻接矩阵或邻接表实现图的以下基本操作: (1)构造图(包括有向图、有向网、无向图、无向网); (2)根据深度优先遍历图。
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
yangliaoping
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动***等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:

参考资料

 

随机推荐