zoukankan      html  css  js  c++  java
  • 第六章学习小结

    本章学习了图,图这种数据结构相对树的数据结构,又是复杂了许多,这一章图的作业是分别用深度搜索DFS和BFS广度搜索来输出非连通分量。抛开具体的存储结构,整个程序主要由三部分组成,主函数,调用DFS的函数,调用BFS的函数,循环多次调用广搜和深搜的函数,便可输出非连通图。

    void DFS_AM(AMGraph &G,int v)
     {  //邻接矩阵的深度搜索 
     	for(int w=0;w<G.vexnum;w++)
     	if(G.arcs[v][w]!=0 && (!visited[w]) )
     	{
    	 visited[w]=true;     //每访问一个就要将其置为true 
    	 cout << w << " ";
         DFS_AM(G,w);
     }
    }
    

      

    void BFS_AM(AMGraph &G,int v)
     {
         visited[v]=1;
         queue<int> q;
         int u;
         q.push(v);
        while(!q.empty())
         {
         u=q.front();
        q.pop();
         cout<< u << " ";
    
        for(int w=0;w<G.vexnum;w++)
        {
            if(G.arcs[u][w]!=0 && (!visited[w]))
            {
                visited[w]=1;
                q.push(w);
            }
        }
         }

    在作业题我们可以看到,我采用的存储结构是邻接矩阵,因为在进行对矩阵的两个顶点的边进行初始化时双向边用数组操作较为方便,如果用链式存储,对于指针的操作时十分复杂的。

    还有关于图的应用,经过老师上课的分析在对图的最小生成树,最短路径的应用中,我们需要掌握算法思想,以及需要用到的辅助结构,包括它们的初态和终态,这三个算法核心思想十分相似,这为我们以后的解题提供了新思路。

  • 相关阅读:
    android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
    Web前端框架与类库的思考
    android应用开发(十):widget的使用
    响应式WEB设计的9项基本原则
    谈一下关于CQRS架构如何实现高性能
    迪杰斯特拉算法——PAT 1003
    Android开发-SQLite数据库
    寻找水王(2)
    PAT-1003
    PAT-1002
  • 原文地址:https://www.cnblogs.com/liusiling/p/10889637.html
Copyright © 2011-2022 走看看