圖的儲存之鄰接矩陣

2022-12-03 21:00:34

鄰接矩陣存圖:

c++

 1 #include<iostream>
 2 using namespace std;
 3 
 4 class AM//鄰接矩陣存圖 用法 AM 圖的名稱 ={規模長(int),規模寬(int),是否為無向圖,是為true,不是為false(bool)} 
 5 {
 6     private:
 7         int sn, sm;
 8         bool is_undirected_graph = true;//是否為無向圖,是為true,不是為false
 9         bool arry[sn][sm];
10     public:
11         void AM(int input_n, int input_m,bool input_is_undirected_graph)//建構函式 input_n是規模長,input_m是規模寬,input_is_undirected_graph是 是否為無向圖
12         {
13             this->sn = input_n; this->sm = input_m;//賦值
14             this->is_undirected_graph = input_is_undirected_graph;//賦值
15             return;//寫不寫都行
16         }
17         void ~AM(){}//解構函式,這裡沒什麼用,寫上更好
18         void link(int _A_, int _B_)//從_A_到_B_連邊 
19         {
20             if (is_undirected_garph == true)//如果是無向圖
21             {
22                 this->arry[_A_][_B_] = this->arry[_B_][_A_] = true;//雙向邊連上
23                 return;//寫不寫都行
24             }
25             else//如果不是
26             {
27                 this->arry[_A_][_B_] = true;//只連一個
28                 return;//寫不寫都行
29             }
30             return//寫不寫都行
31         }
32         bool unlink(int _A_, int _B_)//去掉_A_到_B_這條邊,成功返回true,失敗返回false
33         {
34             if (this->arry[_A_][_B_] == false)//如果沒邊 return false;
35             {
36                 return false;
37             }
38             if (is_undirected_garph == true)//如果是無向圖
39             {
40                 this->arry[_A_][_B_] = this->arry[_B_][_A_] = false;//兩邊都刪
41                 return true;//成功
42             }
43             else//如果不是
44             {
45                 this->arry[_A_][_B_] = false;//只刪一邊
46                 return true;//成功
47             }
48         }
49         boll ask(int _A_, int _B_)//_A_到_B_是否有邊
50         {
51             return this->arry[_A_][_B_] == true ? true : false;
52             /*三目運運算元,如果有邊,返回true,沒變返回false
53             * 格式為 a ? b : c
54             * 意為如果a成立那麼表示式為b,如果a不成立,那麼返回c
55             * 可以譯作C++程式碼:
56             * if (a) //也可寫作if (a==true)
57             * {
58             *    return b;
59             * }
60             * else
61             * {
62             *    return c;
63             * }
64             */
65         }
66 };