- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据图结构的算法毕业论文
图
图形结构是一种比树形结构更复杂的线性结构。树形结构中的点之间有明显的层次关系,每一层上的结点只能和上一层中的一个结点相关,但可能和下一层的多个结点相关。在图形结构中,任意两个结点之间都可能相关,即结点与结点之间的邻接关系可以是任意的。因此,图形结构可用来描述更加复杂的对象。
1 图的基本概念存储结构 1.1 图的定义
图(Graph)是由非空的顶点集合V与描述顶点之间关系边(或者弧)的集合E组成,其形式化定义为:G=(V, E)
如果图G中的每一条边都是没有方向的,则称G为图。图中边图中顶点的无序偶对。无序偶对通常用括表示。例如,顶点偶对i,vj)表示顶点i和顶点j相连的边,并且i,vj)与j,vi)表示同一条边。
如果图G中的每一条边都是有方向的,则称G为有向图。有向图中的边是图中顶点的有序偶对,有序偶对通常用尖括号表示。例如,顶点偶对i,vj表示从顶点i指向顶点j的一条有向边;其中,顶点i称为有向边i,vj的起点,顶点j称为有向边i,vj的终点。有向边为弧对弧i,vj来说,vi为弧的起点,称为弧j为弧的终点,称为弧头。图是一种复杂的数据结构,表现在不仅各顶点的度可以不同,而且顶点之间的逻辑关系也错综复杂。从图的定义可知:一个图的信息包括两部分:图中顶点的信息以及描述顶点之间的关系边或弧的信息。因此无论采取什么方法来建立图的存储结构,都要完整、准确反映这两部分的信息。为适于用C语言描述,从本节介绍几种常用的图存储结构。.2 邻接矩阵
所谓邻接矩阵存储结构,就是一维,并用矩阵来表示图中各顶点之间的邻接关系。定图V, E)有n个顶点,即V={0,v1,…,vn-1},则表示G中各顶点相邻关系需用一个nn的矩阵,且矩阵元素为:
A[i][j]=
若G是带权图(网),则邻接矩阵可定义为:
A[i][j]=
其中,ij表示i,vj)或i,vj上的权值;∞则为计算机上所允许的于所有边上权值的数。无向图的邻接矩阵表示如图7-6所示。
图7-6 无向图邻接矩阵表示有向图的邻接矩阵表示如图7-7所示。
图7-向图邻接矩阵表示带图的邻接矩阵表示如图7-8所示。
图7-图邻接矩阵表示从图的邻接矩阵可以看出下特点:
无向图(包括带权图)的邻接矩阵一定是一个按对角线对称对称矩阵。因此,在具体存放邻接矩阵时只需存放上(或下)三角矩阵的元素即可。
对无向图,邻接矩阵的第i第i列的非零元素(或非∞元素)个数正好是第i个顶点的度Di)。
对有向图,邻接矩阵的第i行非零元素(或非∞元素)的个数正好是第i个顶点的OD(vi),第i列非零元素(或非∞元素)的个数正好是第i个顶点的入度IDi)。
用邻接矩阵存储图,很容易确定图中任意两个顶点之是否有边相连;但是,要确定图中具体有多少条边,则必须按行、列对每一个元素进行查后方能确定,因此花费的时间代价大,这也是用邻矩阵存储图的局限性。
在采用邻接矩阵方式表示图时,除了用一个二维数组存储用于表示顶点相邻关系的矩阵之外,还需要用一个一维数组存储顶点信息。这样,一个图在顺序存储结构下的类定义为;
typedef struct
{
char vertex[MaxNum]; /*顶点为字符型且顶点表的长度小于MaxNm*/
int edges[MaxNum][MaxNum]; /*边整型且edges为邻接矩阵*/
} MGraph; /*MGraph为邻接矩阵存储的图类型*/
建立一个无向图的邻接矩阵如下:#includestdio.h
#includestdlib.h
#define MAXSIZE 30
typedef struct
{
char vertex[MAXSIZE]; //顶点为字符型且顶点表的长度小于MAXSIZE
int edges[MAXSIZE][MAXSIZE]; //边为整型且edges为邻接矩阵
}MGraph; //MGraph为采用邻接矩阵存储的图类型
void CreatMGraph(MGraph *g,int e,int n)
{ //建立无向图的邻接矩阵g-egdes,n为顶点个数,e为边数
int i,j,k;
printf(Input data of vertexs(0~n-1):\n);
for(i=0;in;i++)
g-vertex[i]=i; //读入顶点信息
for(i=0;in;i++)
for(j=0;jn;j++)
g-edges[i][j
您可能关注的文档
最近下载
- 电力调度软件:OpenDSS二次开发_(7).OpenDSS高级功能使用.docx VIP
- (新版)实验动物从业人员培训证书考试题库大全-下(判断题库).docx VIP
- 电力调度软件:OpenDSS二次开发_(6).基于OpenDSS的电力系统仿真.docx VIP
- 污水池清理施工的方案.docx VIP
- 19R505 19G540室外管道钢结构架空综合管廊敷设.pdf VIP
- 2025年度绍兴市专业技术人员公需考试 -党政建设系列专题(必修一).doc VIP
- 劳动教育的跨学科教育研究教学研究课题报告.docx
- 沃尔玛绩效管理制度.docx
- 2024版办公楼智能化物业增值服务合同模板.docx VIP
- 温度变送器检定人员考试试卷.pdf VIP
文档评论(0)