码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构-图存储表示之邻接表

时间:2015-06-19 21:52:02      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

接表

图论中,接表代表一个中的所有或弧。

邻接表存储表示,需要保存一个顺序存储的顶点表和每个顶点上的边的链接表。

接表(Adjacency List),即数表相合的存方法。

 

如果是无向,那么每条由两个成,分代表的两个端点;

如果是有向,那么每条是一个,分代表的始点和点。

一般来接表是无向的。

 

算机科学中,接表描述一种密相关的数据构,用于表征。在接表的表示中,中的每个点,我将保存所有其它与之相点(即“接表”)。例如,由van Rossum提出的,使用 哈希表将每个点和该顶点的接点数起来,就可以看作是上述表 示方法的一种实现。又如,在Cormenetal中,点数的每个元素都指向一个接点单链表。

接表构的困之一是无法明确在什么地方保存相关度或花了解决问题,一些算法,如 Goodrich and Tamassia 所提出的面向接表,有也称关度,它每个点保存一个象表,每个象表示指向点的那条的关度。了完善构,每条指向两个成其端点的点。外的边对象使得它比直接列出所有接表消耗更多的内存,但它不失一种保存相关信息的好方法。

 

可用于替代接表的主要有接矩。用稀疏接矩表示接表,将占用更少的空是因它能避免不存在的分配任何除了空方面的考外,不同的数据构也使得不同的操作得更容易。在一个接表中,定一个点,我能很容易地找出它的所有邻边,因只需要取它的接表就可以了。在一个接矩中,相同的操作需要描一行,花 O(n) 时间。而如果你想知道定的两个是否存在有,在接矩里可以立刻到,在接表中需要花的最小关度成比例的时间

 

接表的理方法是这样的。

1点用一个一,另外,点数中,每个数据元素需要存指向第一个接点的指,以便于该顶点的信息。

2中每个vi的所有接点构成一个线性表,由于接点的个数不定,所以用单链表存,无向为顶vi表,有向为顶vi弧尾的出表。

 

若是有向接表的构是似的,点作弧尾来存储边表容易得到每个点的出度,而以的表容易得到点的入度,即逆接表。

带权值的网,可以在点定中再增加一个weight的数据域,存储权值信息即可

 

数据结构-图存储表示之邻接表

标签:

原文地址:http://my.oschina.net/u/660460/blog/468977

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!