数据结构图的基本操作代码
时间: 2023-10-12 14:15:36 浏览: 46
数据结构图的基本操作包括创建、插入、删除、遍历等。具体的代码实现因不同的图结构而异,下面以邻接矩阵实现的无向图为例,给出基本操作的代码示例。
1. 创建图
```c++
const int MAXN = 100; // 图的最大顶点数
int G[MAXN][MAXN]; // 邻接矩阵表示图
int n; // 图的顶点数
void createGraph() {
memset(G, 0, sizeof(G));
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
scanf("%d", &G[i][j]);
}
}
}
```
2. 插入结点
```c++
void insertNode(int v) {
++n; // 顶点数加一
for (int i = 0; i < n; ++i) {
G[n-1][i] = G[i][n-1] = 0; // 新顶点与其他顶点不相邻
}
}
```
3. 插入边
```c++
void insertEdge(int u, int v) {
G[u][v] = G[v][u] = 1;
}
```
4. 删除结点
```c++
void deleteNode(int v) {
--n; // 顶点数减一
for (int i = v; i < n; ++i) {
for (int j = 0; j < n; ++j) {
G[i][j] = G[i+1][j]; // 删除顶点后,后面的顶点向前移动
G[j][i] = G[j][i+1];
}
}
}
```
5. 删除边
```c++
void deleteEdge(int u, int v) {
G[u][v] = G[v][u] = 0;
}
```
6. 遍历
```c++
void dfs(int u, bool vis[]) {
vis[u] = true;
for (int v = 0; v < n; ++v) {
if (G[u][v] && !vis[v]) {
dfs(v, vis);
}
}
}
void bfs(int u, bool vis[]) {
queue<int> q;
q.push(u);
vis[u] = true;
while (!q.empty()) {
int x = q.front();
q.pop();
for (int v = 0; v < n; ++v) {
if (G[x][v] && !vis[v]) {
vis[v] = true;
q.push(v);
}
}
}
}
```