基本操作

  • 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

图的基本操作_数据结构_02


邻接矩阵:判断B和D是否有边 只需要看B行D列是否有元素

邻接表:判断B的边结点有没有D

Neighbors(G,x):列出图G中与结点x邻接的边

图的基本操作_邻接矩阵_03


邻接矩阵:遍历该点的行或者列,检查哪些地方是1

邻接表:遍历边节点链表

图的基本操作_链表_04


邻接矩阵:遍历该点的行或者列,检查哪些地方是1

邻接表:出边:遍历该点的节点链表 入边:整个边节点链表

InsertVertex(G,x):在图G中插入顶点x

图的基本操作_邻接表_05

邻接矩阵:插入节点 值赋0

邻接表:插入节点 值赋^

有向图一样

DeleteVertex(G,x):从图G中删除顶点x

图的基本操作_邻接矩阵_06


邻接矩阵:该点的行和列都设为0 顶点设为空

邻接表:删除点、边链表、连接该点的边 O(1)~O(|E|)

图的基本操作_邻接矩阵_07


方法同无向图一样

AddEdge(G,x,y):若无向边(x,y)或有向边<x,y>不存在,则向图G中添加该边

图的基本操作_邻接表_08


邻接矩阵:直接修改坐标的值为1

邻接表:头插法或尾插法 O(1)~O(|V|)

RemoveEdge(G,x,y):若无向边(x,y)或有向边<x,y>存在,则从图G中删除该边

图的基本操作_邻接表_09


邻接矩阵:该边位置设为0

邻接表:删除边链表

FirstNeighbor(G,x):求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点或图中不存在x,则返回-1

图的基本操作_邻接矩阵_10


邻接矩阵:扫描该行元素 第一个为1的点

邻接表:找到边节点链表中的第一个节点

图的基本操作_链表_11


邻接矩阵:出边:扫描该行元素 第一个为1的点 入边:扫描该列元素 第一个为1的点

邻接表:出边:找到边节点链表中的第一个节点 入边:遍历整个边节点链表

NextNeighbor(G,x,y):假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1

图的基本操作_邻接表_12


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相同