深度优先遍历

int visited[MAXV]= {0};
void DFS(AGraph *G,int v) {
    ArcNode *p;
    visited[v]=1;
    cout<<v<<" ";
    p=G->adjlist[v].firstarc;
    while(p!=NULL) {
        if(visited[p->adjvex]==0)
            DFS(G,p->adjvex);
        p=p->nextarc;
    }
}

广度优先遍历

void BFS(AGraph *G,int v) {
    ArcNode *p;
    int Qu[MAXV],front=0,rear=0;
    int visited[MAXV];
    int w,i;
    for(i=0; i<G->n; i++)
        visited[i]=0;
    cout<<v<<" ";
    visited[v]=1;
    rear=(rear+1)%MAXV;
    Qu[rear]=v;
    while(front!=rear) {
        front=(front+1)%MAXV;
        w=Qu[front];
        p=G->adjlist[w].firstarc;
        while(p!=NULL) {
            if(visited[p->adjvex]==0) {
                cout<<p->adjvex<<" ";
                visited[p->adjvex]=1;
                rear=(rear+1)%MAXV;
                Qu[rear]=p->adjvex;
            }
            p=p->nextarc;
        }
    }
    cout<<endl;
}