voidDFS(ALGraph G,int v){
visited[v]=1;printf("%c ", G.vertices[v].data);for(ArcNode* cur = G.vertices[v].firstarc; cur !=nullptr; cur = cur->nextarc){if(!visited[cur->adjvex])DFS(G, cur->adjvex);}}
2.非递归
#include<stack>#include<iostream>usingnamespace std;voidDFS(ALGraph G,int v){
visited[v]=1;printf("%c ", G.vertices[v].data);
stack<ArcNode*> st;
ArcNode* cur = G.vertices[v].firstarc;int index =0;while(cur ||!st.empty()){while(cur){
index = cur->adjvex;if(!visited[index]){
st.push(cur);
visited[index]=1;printf("%c ", G.vertices[index].data);
cur = G.vertices[index].firstarc;}else
cur = cur->nextarc;}if(st.empty())break;
cur = st.top();
st.pop();
cur = cur->nextarc;}}