圖的儲存之鄰接矩陣
阿新 • • 發佈:2022-12-04
鄰接矩陣存圖:
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 };