第11周项目3-图遍历算法实现(深度优先DFS)

来源:互联网 发布:c语言能做什么项目 编辑:程序博客网 时间:2024/06/05 09:05
  1. /* 
  2. *Copyright(c)2017,烟台大学计算机学院 
  3. *All right reserved. 
  4. *文件名:sk.cpp btree.h btree.cpp 
  5. *作者:盛凯 
  6. *完成日期:2017年12月14日 
  7. *版本号:v1.0 
  8. * 
  9. *问题描述:图遍历算法实现
  10. *输入描述:无 

  1. *程序输出:见运行结果

  2. sk.cpp:

  3. #include <stdio.h>
    #include <malloc.h>
    #include "graph.h"
    int visited[MAXV];
    void DFS(ALGraph *G, int v)
    {
        ArcNode *p;
        int w;
        visited[v]=1;
        printf("%d ", v);
        p=G->adjlist[v].firstarc;
        while (p!=NULL)
        {
            w=p->adjvex;
            if (visited[w]==0)
                DFS(G,w);
            p=p->nextarc;
        }
    }


    int main()
    {
        int i;
        ALGraph *G;
        int A[5][5]=
        {
            {0,1,0,1,0},
            {1,0,1,0,0},
            {0,1,0,1,1},
            {1,0,1,0,1},
            {0,0,1,1,0}
        };
        ArrayToList(A[0], 5, G);


        for(i=0; i<MAXV; i++) visited[i]=0;
        printf(" 由2开始深度遍历:");
        DFS(G, 2);
        printf("\n");


        for(i=0; i<MAXV; i++) visited[i]=0;
        printf(" 由0开始深度遍历:");
        DFS(G, 0);
        printf("\n");
        return 0;
    }
  4. 程序运行结果如图所示:

  5. 反思总结:图的深度优先占内存较少但是速度较慢。
阅读全文
0 0