
Queue && Breadth-First-Search
Queue(队列)
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Enqueue(Q,x) (进栈) if(Q.head==Q.tail+1) { error "overflow" }else { Q.[Q.tail]=x if(Q.tail==Q.length) { e.tail=1 }else Q.tail++ }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Dequeue(Q) (出栈) if(Q.head==Q.tail) { error "underflow" }else { x=Q.[Q.head] if(Q.head==Q.length) { e.head=1 }else Q.head++ return x }
|
Breadth-First-Search(广度优先)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
for each vertex u∈G.V-{s} 图G=(V,E) { u.color=WHITE u.d=∞ (s至u的距离 u.π=NULL (u前驱 } s.color=GRAY s.d=0 s.π=NULL Q=Φ Enqueue(Q,s) while(Q!=Φ ) { u=Dequeue(Q) for each v∈G.Adj[u] (邻接链表 { if(v.color==WHITE) { v.color=GRAY v.d=u.d+1 v.π=u Enqueue(Q,v) } } u.color=BLACK }
|
近期评论