//DFS
void DFSTravel(Graph G){
for(i=0,i<G.vexnum,i++){
visited[i]=false;
}
for(i=0,i<G.vexnum,i++){
DFS(G,i);
}
}
void DFS(Graph G,int v){
visit(v);
visited[v]=true;
for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){
if(!visited[w])
DFS(G,w);
}
}
//BFS
void BFSTravel(Graph G){
InitQueue(Q);
for(i=0,i<G.vexnum,i++){
visited[i]=false;
}
for(i=0,i<G.vexnum,i++){
BFS(G,i);
}
}
void BFS(Graph G,int v){
visit[v];
visited[v]=true;
Enqueue(Q,v);
while(!isEmpty(Q)){
DeQueue(Q,p);
for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){
if(!visited[w]){
visit[w];
visited[w]=true;
EnQueue(Q,w);
}
}
}
//DFS非递归
void DFS_No_RC(Graph G){
InitStack(S);
for(i=0,i<G.vexnum,i++){
visited[i]=false;
}
visited[v]=true;
Push(S,v)
while(!isEmpty(S)){
k=pop(S);
visit(k);
for(w=FirstNeighbor(G,k);w>=0;w=NextNeighbor(G,k,w)){
if(!visited[w]){
visited[w]=true;
push(S,w);
}
}
}