c c 從鄰接表轉換到鄰接矩陣

2021-10-06 18:03:57 字數 1383 閱讀 5352

題目:鄰接表和鄰接矩陣都是圖的表示方法,它們相互之間也可以通過一定的方式進行轉換。本題將給出乙個有向圖的鄰接表,請將此鄰接表轉換成對應的鄰接矩陣。

說明:每個點由除空格外的乙個可顯示字元表示,點的順序由ascii碼表的順序決定。

輸入

輸入有若干行

每行的第乙個字元表示起點,隨後由空格隔開的若干字元表示終點

輸出

該鄰接表對應的鄰接矩陣(字元在鄰接表中未出現表示不含該點)

解析

需要注意的是,這裡的圖不一定是簡單圖,也就意味著,會有平行邊和圈的存在,也就是說,在最終的鄰接矩陣,不會是簡單的01矩陣,會有大於1的數字出現。

#define _crt_secure_no_warnings

#include

#include

#include

int input[

130]

[130]=

;int check[

130]=;

int answer[

130]=;

intmain()

else

else}}

}//這裡建議用自己的辦法進行讀取

int sum =0;

for(

int i =

0; i <

130; i++)}

for(

int i =

0; i < sum; i++

)printf

("%d\n"

, input[answer[i]

][answer[sum -1]

]);}

return0;

}

利用input陣列來儲存了輸入的鄰接圖

這裡定義的大小是130,因為我們的輸入都是可以顯示的字元,所以asc碼是大於0,小於128的,用130就可以滿足了

然後就是我對輸入的時候進行的特殊處理,因為每一行的開頭是起點,後面都是終點,flag等的判斷,是為了對起點進行切換,來得到正確的鄰接圖。 (這裡可以進行忽略)

利用check陣列來確定哪些字元是存在的

輸出的時候是按照asc碼的順序,所以根據check陣列裡面的順序進行遍歷就可以了

利用answer來縮小了進行儲存

這裡對於input陣列的讀取進行了忽略,請根據自己的情況和所許來編寫input陣列的讀入,在提交的作業的時候,大家也可以避免查重的情況出現

鄰接矩陣 鄰接鍊錶 轉換

include include include graph.h include using namespace std typedef int infotype define maxv 100 最大頂點個數 define inf 32767 inf表示 以下定義鄰接矩陣型別 typedef stru...

鄰接表轉鄰接矩陣

假設無向圖g採用鄰接矩陣儲存,編寫乙個演算法輸出鄰接表。description 第一行為乙個 整數n,表示頂點的個數 頂點 編號為0到n 1 接下來是為乙個n n大小的 整數矩陣,表示圖的鄰接關係。數字為0表示不鄰接,1表示鄰接。input 輸出圖g的鄰接表。第一行表示頂點0可直接到達的 頂點編號。...

鄰接矩陣與鄰接表

鄰接矩陣表示圖 public class graph private int vertexnum private int edgenum private int g 鄰接矩陣 public graph int vertexnum public void insertedge edge edge pu...