数据结构–图的基本操作
使用的存储模式:
![](https://img-blog.csdnimg.cn/90b0fd9740994bdc9a0b31be3ea13190.png)
图的基本操作:
• Adjacent(G,x,y):判断图G是否存在边<x, y>或(x, y)。
• Neighbors(G,x):列出图G中与结点x邻接的边。
• InsertVertex(G,x):在图G中插入顶点x。
• DeleteVertex(G,x):从图G中删除顶点x。
• AddEdge(G,x,y):若无向边(x, y)或有向边<x, y>不存在,则向图G中添加该边。
• RemoveEdge(G,x,y):若无向边(x, y)或有向边<x, y>存在,则从图G中删除该边。
• FirstNeighbor(G,x):求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点
或图中不存在x,则返回-1。
• NextNeighbor(G,x,y):假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一
个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1。
• Get_edge_value(G,x,y):获取图G中边(x, y)或<x, y>对应的权值。
• Set_edge_value(G,x,y,v):设置图G中边(x, y)或<x, y>对应的权值为v。
图的基本操作
Adjacent(G,x,y)
判断图G是否存在边<x, y>或(x, y)。
有向图:
![](https://img-blog.csdnimg.cn/700e2839b8da4230a3df52171b978cdf.png)
![](https://img-blog.csdnimg.cn/4ae72772789440ba9f80909a14990dc2.png)
无向图:
![](https://img-blog.csdnimg.cn/13b5b0aee60d43c4b2139abb7f6c6423.png)
![](https://img-blog.csdnimg.cn/7431d393d3ec4fbbb15a0780468c21c9.png)
Neighbors(G,x)
列出图G中与结点x邻接的边。
无向图:
![](https://img-blog.csdnimg.cn/ce89acf1e178457fb4341259b677b8db.png)
![](https://img-blog.csdnimg.cn/9f0939eb3db5451181a4979048a02173.png)
有向图:
![](https://img-blog.csdnimg.cn/a0eef164c6d340b9a561b88c4eabdf90.png)
![](https://img-blog.csdnimg.cn/739dbca83c60492ead333d6c6e34c3ee.png)
InsertVertex(G,x)
在图G中插入顶点x。
无向图:
![](https://img-blog.csdnimg.cn/1e96ab05ae6f487b99eaa494b5f68aad.png)
DeleteVertex(G,x)
从图G中删除顶点x。
无向图:
![](https://img-blog.csdnimg.cn/134aaf065abf44d7a53506b326796357.png)
有向图:
![](https://img-blog.csdnimg.cn/15c8c780786f42b297f4e8279f61621c.png)
AddEdge(G,x,y)
若无向边(x, y)或有向边<x, y>不存在,则向图G中添加该边。
无向图:
![](https://img-blog.csdnimg.cn/9b1153f4ccc44907b10f89d0d07f6bac.png)
RemoveEdge(G,x,y)
若无向边(x, y)或有向边<x, y>存在,则从图G中删除该边。
无向图:
![](https://img-blog.csdnimg.cn/48d075c472eb48ea9f2b8576adb92b20.png)
FirstNeighbor(G,x)
求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点或图中不存在x,则返回-1。
无向图:
![](https://img-blog.csdnimg.cn/4086498c02d847c5b89d5a9d11ad8b6d.png)
有向图:
![](https://img-blog.csdnimg.cn/f6bc875bbdfd43a296ab69e40c1489cf.png)
NextNeighbor(G,x,y)
假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1。
无向图:
![](https://img-blog.csdnimg.cn/ce7fa3787801460fab032f673a2a2516.png)
Get_edge_value(G,x,y)
获取图G中边(x, y)或<x, y>对应的权值。
Set_edge_value(G,x,y,v)
设置图G中边(x, y)或<x, y>对应的权值v。
Adjacent(G,x,y)
判断图G是否存在边<x, y>或(x, y)。
无向图:
![](https://img-blog.csdnimg.cn/ed5b2408bc1d4a74bdfb614b2250aa07.png)
知识回顾与重要考点
• Adjacent(G,x,y):判断图G是否存在边<x, y>或(x, y)。
• Neighbors(G,x):列出图G中与结点x邻接的边。
• InsertVertex(G,x):在图G中插入顶点x。
• DeleteVertex(G,x):从图G中删除顶点x。
• AddEdge(G,x,y):若无向边(x, y)或有向边<x, y>不存在,则向图G中添加该边。
• RemoveEdge(G,x,y):若无向边(x, y)或有向边<x, y>存在,则从图G中删除该边。
•
F
i
r
s
t
N
e
i
g
h
b
o
r
(
G
,
x
)
\color{red}FirstNeighbor(G,x)
FirstNeighbor(G,x):求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点
或图中不存在x,则返回-1。
•
N
e
x
t
N
e
i
g
h
b
o
r
(
G
,
x
,
y
)
\color{red}NextNeighbor(G,x,y)
NextNeighbor(G,x,y):假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一
个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1。
• Get_edge_value(G,x,y):获取图G中边(x, y)或<x, y>对应的权值。
• Set_edge_value(G,x,y,v):设置图G中边(x, y)或<x, y>对应的权值为v。
此外,还有
图的遍历算法
\color{red}图的遍历算法
图的遍历算法,包括深度优先遍历和广度优先遍历。