Skip to content

Commit b3f8af6

Browse files
committed
Correct python typo for data structure
1 parent f9bf499 commit b3f8af6

File tree

5 files changed

+125
-91
lines changed

5 files changed

+125
-91
lines changed

数据结构/codes/mbinary/graph/adjacentList.py

Lines changed: 121 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -10,144 +10,175 @@
1010
#########################################################################
1111
'''
1212

13-
from collections import Iterable,deque
13+
from collections import Iterable, deque
14+
15+
1416
class vertex:
15-
def __init__(self,mark,firstEdge=None,val=None):
17+
def __init__(self, mark, firstEdge=None, val=None):
1618
self.mark = mark
1719
self.val = val
1820
self.firstEdge = firstEdge
1921
self.isVisited = False
22+
2023
def __str__(self):
21-
return 'V'+str(self.mark)
24+
return 'V' + str(self.mark)
25+
2226
def __repr__(self):
2327
return str(self)
28+
29+
2430
class edge:
25-
def __init__(self,adjVertexs, weight = 1,nextEdge=None):
31+
def __init__(self, adjVertexs, weight=1, nextEdge=None):
2632
'''adjVertexs:tuple(v.mark,u.mark)'''
2733
self.weight = weight
2834
self.adjVertexs = adjVertexs
2935
self.nextEdge = nextEdge
3036
self.isVisted = False
31-
def __add__(self,x):
32-
return self.weight +x
33-
def __radd__(self,x):
34-
return self+x
35-
def __getitem__(self,k):
36-
if k!=0 or k!=1:raise IndexError
37+
38+
def __add__(self, x):
39+
return self.weight + x
40+
41+
def __radd__(self, x):
42+
return self + x
43+
44+
def __getitem__(self, k):
45+
if k != 0 or k != 1: raise IndexError
3746
return self.adjVertexs[k]
47+
3848
def __str__(self):
39-
return '--'+str(self.weight)+'--'
49+
return '--' + str(self.weight) + '--'
50+
4051
def __repr__(self):
4152
return str(self)
53+
4254
@property
4355
def v(self):
4456
return self.adjVertexs[0]
57+
4558
@property
4659
def u(self):
4760
return self.adjVertexs[1]
61+
62+
4863
class graph:
49-
def __init__(self):
64+
def __init__(self):
5065
self.vertexs = {}
5166
self.edges = {}
52-
def __getitem__(self,i):
67+
68+
def __getitem__(self, i):
5369
return self.vertexs[i]
54-
def __setitem__(selfi,x):
55-
self.vertexs[i]= x
70+
71+
def __setitem__(self,i, x):
72+
self.vertexs[i] = x
73+
5674
def __iter__(self):
5775
return iter(self.vertexs)
76+
5877
def __bool__(self):
59-
return len(self.vertexs)!=0
60-
def addVertex(self,vertexs):
78+
return len(self.vertexs) != 0
79+
80+
def addVertex(self, vertexs):
6181
'''vertexs is a iterable or just a mark that marks the vertex,whichc can be every imutable type'''
62-
if not isinstance(vertexs,Iterable):vertexs=[vertexs]
82+
if not isinstance(vertexs, Iterable): vertexs = [vertexs]
6383
for i in vertexs:
64-
if not isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i]= vertex(i)
65-
if isinstance(i,vertex) and i not in self.vertexs:self.vertexs[i.mark]= i
84+
if not isinstance(i, vertex) and i not in self.vertexs:
85+
self.vertexs[i] = vertex(i)
86+
if isinstance(i, vertex) and i not in self.vertexs:
87+
self.vertexs[i.mark] = i
6688

67-
def __getVertex(self,v):
68-
if not isinstance(v,vertex):
89+
def __getVertex(self, v):
90+
if not isinstance(v, vertex):
6991
if v not in self.vertexs:
70-
self.vertexs[v]=vertex(v)
92+
self.vertexs[v] = vertex(v)
7193
return self.vertexs[v]
7294
return v
73-
def addEdge(self,v,u,weight = 1):
95+
96+
def addEdge(self, v, u, weight=1):
7497
v = self.__getVertex(v)
7598
u = self.__getVertex(u)
76-
arc = self.findEdge(v,u)
77-
if arc!=None:return #examine that if v,u have been already connected
78-
vertexs = (v,u)
79-
newEdge = edge (vertexs,weight)
99+
arc = self.findEdge(v, u)
100+
if arc != None:
101+
return #examine that if v,u have been already connected
102+
vertexs = (v, u)
103+
newEdge = edge(vertexs, weight)
80104
self.edges[vertexs] = newEdge
81-
if v.firstEdge==None:
82-
v.firstEdge=newEdge
105+
if v.firstEdge == None:
106+
v.firstEdge = newEdge
83107
else:
84-
arc=v.firstEdge.nextEdge
85-
v.firstEdge=newEdge
86-
def findEdge(self,v,u):
108+
arc = v.firstEdge.nextEdge
109+
v.firstEdge = newEdge
110+
111+
def findEdge(self, v, u):
87112
v = self.__getVertex(v)
88113
u = self.__getVertex(u)
89114
arc = v.firstEdge
90-
while arc!=None and u not in arc:
115+
while arc != None and u not in arc:
91116
arc = arc.nextEdge
92-
if arc!=None:return arc
117+
if arc != None: return arc
93118
arc = u.firstEdge
94-
while arc!=None and v not in arc:
119+
while arc != None and v not in arc:
95120
arc = arc.nextEdge
96121
return arc
97-
def delEdge(self,v,u):
98-
if not isinstance(v,vertex):v= self.vertexs[v]
99-
if not isinstance(u,vertex):u= self.vertexs[u]
100-
if u in v.firstEdge:
101-
v.firstEdge =v.firstEdge.nextEdge
122+
123+
def delEdge(self, v, u):
124+
if not isinstance(v, vertex): v = self.vertexs[v]
125+
if not isinstance(u, vertex): u = self.vertexs[u]
126+
if u in v.firstEdge:
127+
v.firstEdge = v.firstEdge.nextEdge
102128
else:
103129
arc = v.firstEdge
104-
while arc.nextEdge!=e:
130+
while arc.nextEdge != None:
105131
arc = arc.nextEdge
106-
if arc!=None: arc.nextEdge = arc.nextEdge.nextEdge
132+
if arc != None: arc.nextEdge = arc.nextEdge.nextEdge
107133
else:
108-
if v in u.firstEdge:
109-
u.firstEdge =u.firstEdge.nextEdge
134+
if v in u.firstEdge:
135+
u.firstEdge = u.firstEdge.nextEdge
110136
else:
111137
arc = u.firstEdge
112-
while arc.nextEdge!=e:
138+
while arc.nextEdge != None:
113139
arc = arc.nextEdge
114140
arc.nextEdge = arc.nextEdge.nextEdge
115-
del self.edges[(v,u)]
141+
del self.edges[(v, u)]
142+
116143
def revisit(self):
117144
for i in self.vertexs.values():
118145
i.isVisited = False
119146
for i in self.edges.values():
120147
i.isVisited = False
148+
121149
def __str__(self):
122-
arcs= list(self.edges.keys())
123-
arcs=[str(i[0])+str(self.edges[i])+str(i[1]) for i in arcs]
124-
s= '\n'.join(arcs)
150+
arcs = list(self.edges.keys())
151+
arcs = [str(i[0]) + str(self.edges[i]) + str(i[1]) for i in arcs]
152+
s = '\n'.join(arcs)
125153
return s
154+
126155
def __repr__(self):
127156
return str(self)
128-
def minPath(self,v,u):
129-
if v not in self or u not in self:return -1
130-
v=self.__getVertex(v)
131-
u=self.__getVertex(u)
132-
q=deque([v])
133-
last={i:None for i in self.vertexs.values()}
157+
158+
def minPath(self, v, u):
159+
if v not in self or u not in self: return -1
160+
v = self.__getVertex(v)
161+
u = self.__getVertex(u)
162+
q = deque([v])
163+
last = {i: None for i in self.vertexs.values()}
134164
last[v] = 0
135-
ds={i:1000000 for i in self.vertexs.values()}
136-
ds[v]=0
137-
while len(q)!=0:
165+
ds = {i: 1000000 for i in self.vertexs.values()}
166+
ds[v] = 0
167+
while len(q) != 0:
138168
nd = q.popleft()
139-
nd.isVisited=True
169+
nd.isVisited = True
140170
arc = nd.firstEdge
141-
while arc!=None:
142-
tgt=None
143-
if arc.v==nd:
171+
while arc != None:
172+
tgt = None
173+
if arc.v == nd:
144174
tgt = arc.u
145-
else:tgt = arc.v
146-
tmp=ds[nd]+arc
147-
if ds[tgt] >tmp:
148-
ds[tgt]=tmp
175+
else:
176+
tgt = arc.v
177+
tmp = ds[nd] + arc
178+
if ds[tgt] > tmp:
179+
ds[tgt] = tmp
149180
last[tgt] = nd
150-
if not tgt.isVisited:q.append(tgt)
181+
if not tgt.isVisited: q.append(tgt)
151182
'''
152183
cur = u
153184
while cur !=v:
@@ -156,36 +187,39 @@ def minPath(self,v,u):
156187
print(str(v))
157188
'''
158189
return ds[u]
190+
159191
def hasCircle(self):
160192
pass
193+
161194
def display(self):
162195
print('vertexs')
163196
for i in self.vertexs:
164197
print(i)
165198
print('edges')
166199
for i in self.edges:
167-
arc=self.edges[i]
168-
print(str(arc.v)+str(arc)+str(arc.u))
169-
170-
if __name__=='__main__':
171-
n=int(input())
172-
while n>0:
173-
cities=int(input())
174-
n-=1
175-
g=graph()
176-
li={}
200+
arc = self.edges[i]
201+
print(str(arc.v) + str(arc) + str(arc.u))
202+
203+
204+
if __name__ == '__main__':
205+
n = int(input())
206+
while n > 0:
207+
cities = int(input())
208+
n -= 1
209+
g = graph()
210+
li = {}
177211
for i in range(cities):
178-
li[input()]=i+1
179-
arc=int(input())
212+
li[input()] = i + 1
213+
arc = int(input())
180214
for j in range(arc):
181-
s=input().split(' ')
182-
g.addEdge(i+1,int(s[0]),int(s[1]))
183-
ct =int(input())
184-
for i in range(ct):
215+
s = input().split(' ')
216+
g.addEdge(i + 1, int(s[0]), int(s[1]))
217+
ct = int(input())
218+
for i in range(ct):
185219
line = input()
186-
line= line .split(' ')
187-
v,u = li[line[0]],li[line[1]]
188-
print(g.minPath(v,u))
220+
line = line.split(' ')
221+
v, u = li[line[0]], li[line[1]]
222+
print(g.minPath(v, u))
189223
g.revisit()
190224
#http://www.spoj.com/submit/SHPATH/id=20525991
191225
'''

数据结构/codes/mbinary/graph/directed.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def __init__(self):
4545
self.edges = {}
4646
def __getitem__(self,i):
4747
return self.vertexs[i]
48-
def __setitem__(selfi,x):
48+
def __setitem__(self,i,x):
4949
self.vertexs[i]= x
5050
def __iter__(self):
5151
return iter(self.vertexs.values())

数据结构/codes/mbinary/graph/undirected.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def __init__(self):
5656
self.edges = {}
5757
def __getitem__(self,i):
5858
return self.vertexs[i]
59-
def __setitem__(selfi,x):
59+
def __setitem__(self,i,x):
6060
self.vertexs[i]= x
6161
def __iter__(self):
6262
return iter(self.vertexs)

数据结构/labs/2017/navigation/directed.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def __init__(self):
3535
self.edges = {}
3636
def __getitem__(self,i):
3737
return self.vertexs[i]
38-
def __setitem__(selfi,x):
38+
def __setitem__(self,i,x):
3939
self.vertexs[i]= x
4040
def __iter__(self):
4141
return iter(self.vertexs.values())

数据结构/labs/2017/navigation/graph.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def __init__(self):
4848
self.edges = {}
4949
def __getitem__(self,i):
5050
return self.vertexs[i]
51-
def __setitem__(selfi,x):
51+
def __setitem__(self,i,x):
5252
self.vertexs[i]= x
5353
def __iter__(self):
5454
return iter(self.vertexs)

0 commit comments

Comments
 (0)