我使用Python中字典dict()方法來存儲圖結構(這里使用的是鄰接表)
舉個例子,比如,將一個無向加權圖(無向網)進行存儲,如下圖所示:
該圖所對應的鄰接表為:
此時,讓字典中的鍵表示各個結點,值則表示各個結點的對應鏈表(即各個鄰接點)。
其中,鏈表用列表list()來進行存儲,而鏈表中的各個結點用元組tuple()來進行存儲:
graph={ 1: [ ( 2 , 2 ), ( 3 , 1) ] ,
1: [ ( 1 , 2 ), ( 4 , 5) , ( 5 , 4) ] ,
1: [ ( 1 , 1 ) ] ,
1: [ ( 2 , 5 ) ] ,
1: [ ( 2 , 4 ) ] }
具體代碼如下:
1 n=int(input())#輸入結點數 2 a=dict()#用來存儲圖 3 vis=dict()#輔助數組,表示圖中的各個結點的狀態(遍歷圖時會用到,用來標記是否以讀) 4 for i in range(n-1):#創建圖結構 5 b=list(map(int,input().split())) 6 if not a.get(b[0]):#字典中不存在該點 7 a[b[0]]=[(b[1],b[2])]#(b[1]為鄰接點,b[2]為權) 8 else:#字典中存在該點 9 a[b[0]].append((b[1],b[2])) 10 if not a.get(b[1]):#字典中不存在該點 11 a[b[1]]=[(b[0],b[2])]#(b[1]為鄰接點,b[2]為權) 12 else:#字典中存在該點 13 a[b[1]].append((b[0],b[2])) 14 #顯示該節點是否以讀(0未讀,1已讀) 15 vis[b[0]]=0 16 vis[b[1]]=0
注:這里不包括如何對圖進行遍歷