##Set Set 是一种用于保存不重复元素的数据结构。常被用做测试归属性,故其查找的性能十分重要。python
Set 是python自带的基本数据结构, 有多种初始化方式。 Python的set跟dict的Implementation方式相似, 能够认为set是只有key的dict.数组
s = set() s1 = {1, 2, 3} s.add('shaunwei') 'shaun' in s # return true s.remove('shaunwei')
##Map - 哈希表 Map 是一种关联数组的数据结构,也常被称为字典或键值对。数据结构
在 Python 中 dict(Map) 是一种基本的数据结构。性能
# map 在 python 中是一个keyword hash_map = {} # or dict() hash_map['shaun'] = 98 hash_map['wei'] = 99 exist = 'wei' in hash_map # check existence point = hash_map['shaun'] # get value by key point = hash_map.pop('shaun') # remove by key, return value keys = hash_map.keys() # return key list # iterate dictionary(map) for key, value in hash_map.items(): # do something with k, v pass
##Graph - 图 图的表示一般使用邻接矩阵和邻接表,前者易实现可是对于稀疏矩阵会浪费较多空间,后者使用链表的方式存储信息可是对于图搜索时间复杂度较高。测试
###邻接矩阵 设顶点个数为 V, 那么邻接矩阵能够使用 V × V 的二维数组来表示。 g[i][j]表示顶点i和顶点j的关系,对于无向图能够使用0/1表示是否有链接,对于带权图则须要使用INF来区分。有重边时保存边数或者权值最大/小的边便可。code
g = [[0 for _ in range(V)] for _ in range(V)]
###邻接表 邻接表经过表示从顶点i出发到其余全部可能能到的边。rem
###有向图get
class DirectedGraphNode: def __init__(self, x): self.label = x self.neighbors = []
###无向图 无向图同上,只不过在建图时双向同时加。hash
class UndirectedGraphNode: def __init__(self, x): self.label = x self.neighbors = []