//不能通过编译,没有引入队列头文件
  1 #include<stdlib.h>
  2 #define MAX_VERTEX_NUM;
  3 typedef int infoType;
  4 typedef int vertexType;
  5 
  6 typedef struct ArcNode{
  7     int adjvex;
  8     struct ArcNode *next;
  9     infoType *weight;
 10 }Arcnode;
 11 
 12 typedef struct VNode{
 13     vertexType data;
 14     Arcnode *firstarc;
 15 }VNode;
 16 
 17 //VNode G[MAX_VERTEX_NUM];
 18 void getdata(VNode v);
 19 
 20 //图的创建
 21 void createGraph(int n,VNode G[]){
 22     int i,e;
 23     Arcnode *p,*q;
 24     printf("input the information of the vertex\n");
 25     for(i=0;i<n;i++){
 26         getdata(G[i]);
 27         G[i].firstarc=NULL;
 28     }
 29     for(i=0;i<n;i++){
 30         printf("create the edges for the %dth vertex\n",i);
 31         scanf("%d",&e);
 32         while(e!=-1){
 33             p=(Arcnode *)malloc(sizeof(Arcnode));
 34             p->next=NULL;
 35             p->adjvex=e;
 36             if(G[i].firstarc==NULL){
 37                 G[i].firstarc=p;
 38             }else{
 39                 q->next=p;
 40             }
 41             q=p;
 42             scanf("%d",&e);
 43         }
 44     }
 45 }
 46 
 47 //图的遍历(1)--深度优先搜索
 48 void DFS(VNode g[],int v,int visited[]){
 49     int w;
 50     visit(v);
 51     visited[v]=1;
 52     w=FirstAdj(g,v);
 53     while(w!=-1){
 54         if(visited[w]==0)
 55         DFS(g,w,visited);
 56         w=nextAdj(g,v);
 57     }
 58 
 59 }
 60 
 61 void DFSGraph(VNode g[],int visited[],int n){
 62     int i;
 63     for(i=0;i<n;i++){
 64         visited[i]=0;
 65     }
 66     for(i=0;i<n;i++){
 67         if(visited[i]==0)
 68             DFS(g,i,visited);
 69     }
 70 }
 71 
 72 
 73 //图的遍历(2)--广度优先搜索
 74 
 75 void BFS(VNode G[],int v,int visited[]){
 76     int w;
 77     visit(v);
 78     visited[v]=1;
 79     EnQueue(q,v);
 80     while(!emptyA(q)){
 81         Dequeue(&q,&v);
 82         w=FirstAdj(g,v);
 83         while(w!=-1){
 84             if(visited[w]==0){
 85                 visit(w);
 86                 EnQueue(q,w);
 87                 visited[w]=1;
 88             }
 89             w=NextAdj(g,v);
 90         }
 91     }
 92 }
 93 
 94 void Travel_BFS(VNode g[],int visited[],int n){
 95     int i;
 96     for(i=0;i<n;i++){
 97         visited[i]=0;
 98     }
 99     for(i=0;i<n;i++){
100         if(visited[i]==0)
101             BFS(g,i,visited);
102     }
103 }