C++ 程式實現鄰接矩陣
圖的鄰接矩陣是一個大小為 V x V 的方陣。V 是圖 G 的頂點數。在這個矩陣中,每個邊 V 的頂點都有一個標記。如果圖中有一些從 i 到 j 的邊,那麼在鄰接矩陣的第 ith 行和第 jth 列將是 1(或帶權圖中的一些非零值),否則該位置的值為 0。
鄰接矩陣表示的複雜度
鄰接矩陣表示在計算時佔用 O(V2) 的空間。當圖具有最大邊數和最少邊數時,在這兩種情況下所需的空間將相同。
輸入

輸出
| 0 | 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 2 | 0 | 1 | 0 | 1 | 0 | 0 |
| 3 | 1 | 0 | 1 | 0 | 0 | 1 |
| 4 | 1 | 1 | 0 | 0 | 0 | 1 |
| 5 | 0 | 1 | 1 | 1 | 1 | 0 |
演算法
add_edge(u, v)
輸入:一條邊 {u,v} 的 u 和 v
輸出:圖 G 的鄰接矩陣
Begin adj_matrix[u, v] := 1 adj_matrix[v, u] := 1 End
示例程式碼
#include<iostream>
using namespace std;
int vertArr[20][20]; //the adjacency matrix initially 0
int count = 0;
void displayMatrix(int v) {
int i, j;
for(i = 0; i < v; i++) {
for(j = 0; j < v; j++) {
cout << vertArr[i][j] << " ";
}
cout << endl;
}
}
void add_edge(int u, int v) { //function to add edge into the matrix
vertArr[u][v] = 1;
vertArr[v][u] = 1;
}
main(int argc, char* argv[]) {
int v = 6; //there are 6 vertices in the graph
add_edge(0, 4);
add_edge(0, 3);
add_edge(1, 2);
add_edge(1, 4);
add_edge(1, 5);
add_edge(2, 3);
add_edge(2, 5);
add_edge(5, 3);
add_edge(5, 4);
displayMatrix(v);
}輸出
0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0
Advertisements
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP