邻接表无向图插入新顶点
时间: 2023-07-04 08:10:09 浏览: 183
无向图的邻接表表示
4星 · 用户满意度95%
插入新顶点可以分为两步:
1. 在邻接表中新增一行/列,表示新顶点的邻接情况。
2. 修改原有的邻接表,将与新顶点相邻的顶点加入到新顶点的邻接表中。
具体步骤如下:
1. 在邻接表中新增一行/列,用于表示新顶点。如果邻接表是一个二维数组,那么新增一行就是在数组最后加上一个新行;如果邻接表是一个链表数组,那么新增一列就是在每个链表的末尾加上一个新节点。
2. 对于每个与新顶点相邻的顶点,需要在它们对应的邻接表中加入新顶点。具体操作是在每个相邻顶点的邻接表中新增一个节点,该节点的值为新顶点的编号,表示它与新顶点相邻。
下面是一个示例代码,假设邻接表为一个链表数组:
```c++
void addVertex(vector<int> adjList[], int vertex, int numVertices) {
// 新增一列,表示新顶点的邻接情况
for (int i = 0; i < numVertices; i++) {
adjList[i].push_back(0);
}
adjList[numVertices].resize(numVertices+1);
// 修改邻接表,将与新顶点相邻的顶点加入到新顶点的邻接表中
for (int i = 0; i < numVertices; i++) {
if (adjList[vertex][i] == 1) {
adjList[i].push_back(numVertices);
adjList[numVertices][i] = 1;
}
}
}
```
其中,`adjList` 是邻接表,`vertex` 是新顶点的编号,`numVertices` 是原有顶点的数量。该函数将在 `adjList` 中新增一列,表示新顶点的邻接情况,然后遍历所有与新顶点相邻的顶点,将它们加入到新顶点的邻接表中。
阅读全文