6.4 数据结构——图的存储结构之十字链表及邻接多重表

6.4.1 十字链表

        对于有向图来说,使用邻接表来存储是有缺点的,如果要求有向图的结点的度是比较困难的,邻接表只是方便求出度,但不方便求入度,而逆邻接表方便求入度,不方便求出度。所以要求结点的度,最好就是将邻接表和逆邻接表结合起来,这就是十字链表。

        十字链表(Orthogonal List)是有向图的另一种链式存储结构,也可以看成是将有向图的邻接表和逆邻接表结合起来的一种链表。有向图的每一条弧对应十字链表中的一个弧顶点,同时有向图中的每个顶点在十字链表中对应有一个结点,叫做顶点结点。

顶点结构:

firstin:表示入度边头指针。

firstout:表示出度边头指针。

 弧表结点结构:

 tailvex:表示弧起点在顶点表中的下标

headvex:表示弧终点在顶点表中的下表

hlink:表示入度边表指针域,指向终点相同的下一条边

tlink:表示出度边表指针域,指向起点相同的下一条边

 6.4.2 邻接多种表

        无向图的邻接表中每条边都会被存储两遍,如果对边进行删除或者插入等操作,就要对两个边进行操作,比较麻烦。为了提高无向图的操作,就引入了邻接多重表的存储结构。

顶点结点结构:

 firstedge:指针域,指向顶点的第一条边。

边表结点结构:

mark:标志域,标志这条边是否已经被遍历过。

ivex和jvex:该边所依附的两个顶点在在表头数组中的位置。

ilink:指向依附ivex依附的下一条边。

jlink:指向依附jvex依附的下一条边。

info: 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值