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

  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. 《第11周项目3-图遍历算法实现(深度优先DFS)》
  6. 反思总结:图的深度优先占内存较少但是速度较慢。
    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/qq_40043365/article/details/78799890
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞