• 深度和广度优先搜索


    #include<iostream>
    using namespace std;
    #define maxvex 100
    typedef struct
    {
        int a[maxvex][maxvex];
        int vex;
    }Graph;
    int visiteded[maxvex];
    void DFS(Graph G,int v)
    {
        printf("v%d ",v+1);
        visiteded[v]=1;
        for(int j=0;j<G.vex;j++)
            if(G.a[v][j]==1&&visiteded[j]==0)
                DFS(G,j);
    }
    void DFStravse(Graph G)
    {
        printf("深度优先遍历结果为: \n");
        for(int i=0;i<G.vex;i++)
            if(!visiteded[i])
                DFS(G,i);
    }
    int main()
    {
        memset(visiteded,0,sizeof(visiteded));
        int i,j;
        Graph G;
        printf("\n输入图中顶点数:");
        scanf("%d",&G.vex);
        printf("\n按行输入图的邻接矩阵:\n");
        for(i=0;i<G.vex;i++)
            for(j=0;j<G.vex;j++)
                scanf("%d",&G.a[i][j]);
            DFStravse(G);
            printf("\n");
        return 0;
    }
    /*
    输入图中顶点数:8
    
    按行输入图的邻接矩阵:
    0 1 1 0 0 0 0 0
    1 0 0 1 1 0 0 0
    1 0 0 0 0 1 1 0
    0 1 0 0 0 0 0 0
    0 1 0 0 0 0 0 1
    0 0 1 0 0 0 0 1
    0 0 1 0 0 0 0 0
    0 0 0 0 1 1 0 0
    深度优先遍历结果为:
    v1 v2 v4 v5 v8 v6 v3 v7
    Press any key to continue
    */
    /*#include<iostream>
    #include<queue>
    using namespace std;
    #define Maxvex 100
    typedef struct
    {
        int a[Maxvex][Maxvex];
        int n;
    }MGraph;
    int visited[Maxvex];
    void BFSM(MGraph *G,int k)
    {
        int j;
        queue <int> Q;
        printf("广度优先遍历结点:结点v%d\n",k+1);
            visited[k]=1;
        Q.push(k);
        while(!Q.empty())
        {
            k=Q.front();
            Q.pop();
            for(j=0;j<G->n;j++)
                if(G->a[k][j]==1&&visited[j]==0)
                {
                    printf("广度优先遍历结点:结点v%d\n",j+1);
                        visited[j]=true;
                    Q.push(j);
                }
        }
    }
    void BFSTraveseM(MGraph *G)
    {
        int i=0;
        for(i=0;i<G->n;i++)
           if(!visited[i])
                BFSM(G,i);
    }
    int main()
    {
        MGraph *G=new MGraph;
        memset(visited,0,sizeof(visited));
        printf("\n请输入图中顶点个数:\n");
        scanf("%d",&(G->n));
        printf("\n按行输入图的邻接矩阵:\n");
        for(int i=0;i<G->n;i++)
            for(int j=0;j<G->n;j++)
                scanf("%d",&G->a[i][j]);
            BFSTraveseM(G);
        return 0;
    }*/
    /*
    
    请输入图中顶点个数:
    8
    
    按行输入图的邻接矩阵:
    0 1 1 0 0 0 0 0
    1 0 0 1 1 0 0 0
    1 0 0 0 0 1 1 0
    0 1 0 0 0 0 0 0
    0 1 0 0 0 0 0 1
    0 0 1 0 0 0 0 1
    0 0 1 0 0 0 0 0
    0 0 0 0 1 1 0 0
    广度优先遍历结点:结点v1
    广度优先遍历结点:结点v2
    广度优先遍历结点:结点v3
    广度优先遍历结点:结点v4
    广度优先遍历结点:结点v5
    广度优先遍历结点:结点v6
    广度优先遍历结点:结点v7
    广度优先遍历结点:结点v8
    Press any key to continue*/
  • 相关阅读:
    Android Listview 隐藏滚动条
    打开Activity时,不自动显示(弹出)虚拟键盘
    Spring Boot web API接口设计之token、timestamp、sign
    WPF ListView点击删除某一行并获取绑定数据
    WPF中控件的显示与隐藏
    WPF 格式化输出- IValueConverter接口的使用 datagrid列中的值转换显示
    WPF之DataGrid应用 翻页
    WPF中修改DataGrid单元格值并保存
    DataGrid获取单元格的值
    WPF DataGrid 列宽填充表格方法
  • 原文地址:https://www.cnblogs.com/heqinghui/p/2752115.html
Copyright © 2020-2023  润新知