几种图的存储结构的比较
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
data : 存储顶点信息 firstedge : 依附顶点的第一条边结点
邻接多重表
• • • • • 实现方式:链表 优点:1.节省空间 2. 易判断两点间的关系 缺点:结构较复杂 时间复杂度:O(n+m)或O(n*m)
名
称
实现方法
优点
缺点
时间复杂度
邻接矩阵
二维数组
1. 易判断两点 间的关系 2. 容易求得顶 点的度
1. 节省空间 2. 易得到顶点 的出度 1. 空间要求较 小 2.易求得顶点 的出度和入度 1. 节省空间 2. 易判断两点 间的关系
占用空间大
O(n2+m*n)
邻接表
链表
1. 不易判断两 点间的关系 2. 不易得到顶 点的入度
O(n+m)或 O(n*m)
十字链表
链表
结构较复杂
O(n+m)或 O(n*m)
几种图的存储结构的比较
图的几种主要存储结构
• • • • 邻接矩阵 邻接表 十字链表 邻接多重表
无向图的邻接矩阵
实现方法:二维数组 优点:1.易判断两点间的关系 2容易求得顶点的度
有向图的邻接矩阵
网的邻接矩阵
邻接矩阵
• • • • • 实现方法:二维数组 优点:1.易判断两点间的关系 2容易求得顶点的度 缺点:占用空间大(边数比顶数小得多) 时间复杂度:O(n+n2+e) (n个顶点 e条边)
十字链表
• • • • • 实现方法:链表 优点:1. 空间要求较小 2.易求得顶点的出度和入度 缺点:结构较复杂 时间复杂度:O(n+m)或O(n*m)
邻接多重表
• 这是无向图的另一种链式存储结构,当对 边操作时建议采用此种结构存储。 • (1)设立边结点, 6个域(每条边是一个 数据元素) • (2)设立顶点结点, 2个域(每个顶点也 是一个数据元素)
无向图的邻接表
• •
• •
数据域 指针域 实现方法:链表 优点:1.节省空间 2容易求得顶点的度
邻接点域
有向图的邻接表
网的邻接表
邻接表
• • • • • • 实现方法:链表 优点:1.节省空间 2. 易得到顶点的出度 缺点:1. 不易判断两点间的关系 2. 不易得到顶点的入度 时间复杂度:O(n+m)或O(n*m)
tailvex: 弧尾顶点位置 headvex: 弧头顶点位置 hlink: 弧头相同的下一弧位置 tlink: 弧尾相同的下一弧位置 info: 弧信息
• data firstin
顶点结点 firstout
data : 顶点信息 firstin : 以顶点为弧头的第一条弧结 点 firstout: 以顶点为弧尾的第一条弧结 点
边结点
mark ivex ilink jvex jlink info
mark:标志域,标记该边是否被搜索过。 ivex, jvex : 边依附的两个顶点位置 ilink: 指向下一条依附顶点 i 的边位置 Jlink: 指向下一条依附顶点 j 的边位置 info: 边信息
顶点结点
data firstedge
十字链表
• 它是有向图的另一种链式存储结构。 • 思路:将邻接矩阵用链表存储,是邻接表、 逆邻接表的结合。 • (1)开设弧结点,设5个域(每段弧是一个 数据元素) • (2)开设顶点结点,设3个域(每个顶点也 是一个数据元素)
弧结点
tailvex headvex hlink tlink info
wenku.baidu.com邻接多重表
链表
结构较复杂
O(n+m)或 O(n*m)
谢谢观赏!
邻接多重表
• • • • • 实现方式:链表 优点:1.节省空间 2. 易判断两点间的关系 缺点:结构较复杂 时间复杂度:O(n+m)或O(n*m)
名
称
实现方法
优点
缺点
时间复杂度
邻接矩阵
二维数组
1. 易判断两点 间的关系 2. 容易求得顶 点的度
1. 节省空间 2. 易得到顶点 的出度 1. 空间要求较 小 2.易求得顶点 的出度和入度 1. 节省空间 2. 易判断两点 间的关系
占用空间大
O(n2+m*n)
邻接表
链表
1. 不易判断两 点间的关系 2. 不易得到顶 点的入度
O(n+m)或 O(n*m)
十字链表
链表
结构较复杂
O(n+m)或 O(n*m)
几种图的存储结构的比较
图的几种主要存储结构
• • • • 邻接矩阵 邻接表 十字链表 邻接多重表
无向图的邻接矩阵
实现方法:二维数组 优点:1.易判断两点间的关系 2容易求得顶点的度
有向图的邻接矩阵
网的邻接矩阵
邻接矩阵
• • • • • 实现方法:二维数组 优点:1.易判断两点间的关系 2容易求得顶点的度 缺点:占用空间大(边数比顶数小得多) 时间复杂度:O(n+n2+e) (n个顶点 e条边)
十字链表
• • • • • 实现方法:链表 优点:1. 空间要求较小 2.易求得顶点的出度和入度 缺点:结构较复杂 时间复杂度:O(n+m)或O(n*m)
邻接多重表
• 这是无向图的另一种链式存储结构,当对 边操作时建议采用此种结构存储。 • (1)设立边结点, 6个域(每条边是一个 数据元素) • (2)设立顶点结点, 2个域(每个顶点也 是一个数据元素)
无向图的邻接表
• •
• •
数据域 指针域 实现方法:链表 优点:1.节省空间 2容易求得顶点的度
邻接点域
有向图的邻接表
网的邻接表
邻接表
• • • • • • 实现方法:链表 优点:1.节省空间 2. 易得到顶点的出度 缺点:1. 不易判断两点间的关系 2. 不易得到顶点的入度 时间复杂度:O(n+m)或O(n*m)
tailvex: 弧尾顶点位置 headvex: 弧头顶点位置 hlink: 弧头相同的下一弧位置 tlink: 弧尾相同的下一弧位置 info: 弧信息
• data firstin
顶点结点 firstout
data : 顶点信息 firstin : 以顶点为弧头的第一条弧结 点 firstout: 以顶点为弧尾的第一条弧结 点
边结点
mark ivex ilink jvex jlink info
mark:标志域,标记该边是否被搜索过。 ivex, jvex : 边依附的两个顶点位置 ilink: 指向下一条依附顶点 i 的边位置 Jlink: 指向下一条依附顶点 j 的边位置 info: 边信息
顶点结点
data firstedge
十字链表
• 它是有向图的另一种链式存储结构。 • 思路:将邻接矩阵用链表存储,是邻接表、 逆邻接表的结合。 • (1)开设弧结点,设5个域(每段弧是一个 数据元素) • (2)开设顶点结点,设3个域(每个顶点也 是一个数据元素)
弧结点
tailvex headvex hlink tlink info
wenku.baidu.com邻接多重表
链表
结构较复杂
O(n+m)或 O(n*m)
谢谢观赏!