数据结构实验七图的邻接矩阵常规操作
时间: 2023-12-11 13:33:19 浏览: 35
以下是图的邻接矩阵常规操作的介绍:
1. 创建邻接矩阵
创建邻接矩阵需要两个数组,一个一维数组存储图中顶点信息,一个二维数组存储图中的边或弧的信息。其中,一维数组的每个元素表示一个顶点,二维数组的每个元素表示一条边或弧,如果该元素的值为1,则表示该边或弧存在,否则不存在。
2. 添加顶点
添加顶点时,需要在一维数组中添加一个元素,并在二维数组中添加一行和一列,分别表示该顶点与其他顶点之间的边或弧的关系。
3. 添加边或弧
添加边或弧时,只需要在二维数组中相应的位置上将元素的值改为1即可。
4. 删除顶点
删除顶点时,需要将一维数组中对应的元素删除,并将二维数组中对应的行和列删除。
5. 删除边或弧
删除边或弧时,只需要在二维数组中相应的位置上将元素的值改为0即可。
6. 遍历图
图的遍历有两种方式:深度优先遍历和广度优先遍历。其中,深度优先遍历需要借助栈结构,广度优先遍历需要借助队列结构。
深度优先遍历的代码示例:
```c++
void MGraph::DFTraverse(int v) {
cout<<vertex[v]<<" ";
visited[v]=1;
for(int j=0;j<vertexNum;j++) {
if(edge[v][j]==1 && visited[j]==0) {
DFTraverse(j);
}
}
}
```
广度优先遍历的代码示例:
```c++
void MGraph::BFTraverse(int v) {
queue<int> q;
cout<<vertex[v]<<" ";
visited[v]=1;
q.push(v);
while(!q.empty()) {
int u=q.front();
q.pop();
for(int j=0;j<vertexNum;j++) {
if(edge[u][j]==1 && visited[j]==0) {
cout<<vertex[j]<<" ";
visited[j]=1;
q.push(j);
}
}
}
}
```