基本操作
- 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)
邻接矩阵:判断B和D是否有边 只需要看B行D列是否有元素
邻接表:判断B的边结点有没有D
邻接矩阵:判断B和D是否有边 只需要看B行D列是否有元素
邻接表:判断B的边结点有没有D
Neighbors(G,x):列出图G中与结点x邻接的边
邻接矩阵:遍历该点的行或者列,检查哪些地方是1
邻接表:遍历边节点链表
邻接矩阵:遍历该点的行或者列,检查哪些地方是1
邻接表:出边:遍历该点的节点链表 入边:整个边节点链表
InsertVertex(G,x):在图G中插入顶点x
邻接矩阵:插入节点 值赋0
邻接表:插入节点 值赋^
有向图一样
DeleteVertex(G,x):从图G中删除顶点x
邻接矩阵:该点的行和列都设为0 顶点设为空
邻接表:删除点、边链表、连接该点的边 O(1)~O(|E|)
方法同无向图一样
AddEdge(G,x,y):若无向边(x,y)或有向边<x,y>不存在,则向图G中添加该边
邻接矩阵:直接修改坐标的值为1
邻接表:头插法或尾插法 O(1)~O(|V|)
RemoveEdge(G,x,y):若无向边(x,y)或有向边<x,y>存在,则从图G中删除该边
邻接矩阵:该边位置设为0
邻接表:删除边链表
FirstNeighbor(G,x):求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点或图中不存在x,则返回-1
邻接矩阵:扫描该行元素 第一个为1的点
邻接表:找到边节点链表中的第一个节点
邻接矩阵:出边:扫描该行元素 第一个为1的点 入边:扫描该列元素 第一个为1的点
邻接表:出边:找到边节点链表中的第一个节点 入边:遍历整个边节点链表
NextNeighbor(G,x,y):假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1
FirstNeighbor找到后的下一个
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相同