數據結構——圖結構(Python)


我使用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

注:這里不包括如何對圖進行遍歷

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM