1. 表
|
顺序表 |
线性链表 |
静态链表 |
循环链表 |
双向链表 |
存储空间 |
预定义初 |
动态分配malloc |
预定义最大 |
动态分配 |
动态分配 |
指针 |
elem |
head、tail |
cur |
头/尾 |
L |
头结点 |
– |
有 |
有 |
有 |
有 |
结点 |
– |
data、next |
data、next |
data、next |
prior、data、next |
适用 |
查找求长 |
插入删除 |
综合 |
有尾联结 |
查前 |
|
顺序栈 |
链栈 |
循环队列 |
链队列 |
存储空间 |
预定义初始与增量 |
– |
预定义最大队列 |
动态分配malloc |
指针 |
base、top |
s |
front、rear |
front、rear |
头结点 |
– |
– |
– |
有 |
结点 |
– |
data、next |
– |
data、next |
|
定长顺序 |
堆分配 |
块链 |
存储空间 |
预定义最大串长 |
动态分配malloc |
预定义块大小 |
指针 |
– |
– |
head、tail |
结点 |
– |
– |
ch[]、next |
缺点 |
截断 |
– |
存储量大操作复杂 |
优点 |
– |
空间自由 |
尾指针便于联结 |
|
顺序表示 |
存储空间 |
预定义最大维度,以所需维度分配 |
指针 |
base、bounds、constants |
|
三元顺序表 |
行逻辑链接的顺序表 |
十字链表 |
直观表示 |
非零值 |
非零值 |
非零值 |
非零值信息 |
行信息 |
行信息 |
结点 |
优点 |
转置 |
便于存取任意行非零元、乘 |
便于插入删除、加法 |
|
|
固定rops |
– |
i |
j |
e |
right |
down |
行 |
列 |
值 |
行后继 |
列后继 |
|
头尾链表 |
扩展线性链表 |
原子结点是否有链域 |
无 |
有 |
– |
– |
– |
tag=1 |
hp |
tp |
表结点 |
指向表头 |
指向表尾 |
tag=0 |
atom |
tp |
原子结点 |
值域 |
指向表尾 |
2. 树
|
双亲表示法 |
孩子表示法 |
孩子兄弟表示法(二叉链表) |
直观表示 |
双亲是谁 |
孩子有谁 |
树的结构 |
双亲信息 |
parent(T,x) |
–/添加 |
增加parent域 |
孩子信息 |
遍历 |
链结点 |
firstchild域 |
优点 |
便于双亲操作 |
便于孩子操作 |
树的各种操作 |
缺点 |
孩子操作不便 |
双亲操作不便 |
– |
- 结点结构比较
1、双亲表示法
2、孩子表示法
链表头 |
TElemType data |
firstchild |
|
指向第一个孩子结点 |
|
孩子 |
int child |
next |
|
下一个孩子结点 |
|
3、孩子兄弟表示法
TElemType data |
firstchild |
nextsibling |
|
指向第一个孩子结点 |
指向下一个兄弟结点 |
3. 图
|
数组表示法 |
邻接表 |
十字链表 |
链接多重表 |
直观表示 |
所有点弧信息 |
邻接点、弧 |
弧 |
弧 |
适用 |
无向图、有向图 |
无向图、有向图 |
有向图 |
无向图 |
弧信息 |
arc[i][j] |
i、sdjvex |
ivex、jvex |
ivex、jvex |
出度信息 |
行之和 |
链结点数 |
firstin链结数 |
– |
入度信息 |
列之和 |
遍历、逆邻接表 |
firstout链结数 |
– |
构造时间复杂度 |
n^2+n*e |
n+e |
n+e |
– |
|
– |
n*e |
n*e |
– |
优点 |
信息全 |
节省存储 |
易判任意两点关系 |
增删方便 |
缺点 |
存储大 |
信息不全 |
– |
– |
- 头结点比较(作为一种索引)
1、邻接表
data |
firstarc |
– |
指向链表第一个结点 |
2、十字链表
data |
firstin |
firstout |
– |
指向第一个以该顶点入的弧 |
指向第一个以该顶点出的弧 |
3、邻接多重链表(无向图)
data |
firsedge |
– |
指向第一个依附于该顶点的边 |
- 表(弧)结点比较
1、邻接表
adjvex |
nextarc |
info |
与顶点邻接的点 |
下一条边或弧的点 |
– |
2、十字链表
tailvex |
headvex |
hlink |
tlink |
info |
出顶点 |
入顶点 |
入弧 |
出弧 |
– |
3、邻接多重链表(无向图)
扫描二维码关注公众号,回复:
4174656 查看本文章
mark |
ivex |
ilink |
jvex |
jlink |
info |
是否visit |
– |
依附于ivex的边 |
– |
依附于jvex的边 |
– |
如果程序过于繁琐,总感到一些步骤在重复,可以看一下存储结构。存储结构具体实现会随真实场景而变,可以自定义所需。
我跟你
我跟大家,同时大家又是我,出现偏差,出现大家跟大家的情况,需要限定,只能跟新的人有关系
大家跟大家
抽象一旦具体,会存在偏差