码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构——图结构(Python)

时间:2020-04-19 19:36:15      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:col   dict   lse   append   inf   graph   数据   NPU   list()   

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

注:这里不包括如何对图进行遍历

 

数据结构——图结构(Python)

标签:col   dict   lse   append   inf   graph   数据   NPU   list()   

原文地址:https://www.cnblogs.com/wangjiong/p/12732990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!