首页 > 其他 > 详细

第六章学习小结

时间:2019-05-19 22:18:01      阅读:150      评论:0      收藏:0      [点我收藏+]

本章学习了图的结构和应用,学完之后觉得图其实就是数组与链表的结合。

对于邻接表和十字链表的两种不同的储存结构,对于邻接表来说,优点在于可以储存有向图与无向图,便于增加和删除顶点和统计边的数目,同时它的空间效率也高,对于有向图可以建立逆邻接表;十字链表作为有向图的另一种链式存储。在十字链表中容易找到Vi的尾的弧,也容易找到以Vi为头的弧,因而容易求得顶点的出度和入度。

然后是这一章节的重点,图的遍历,氛围DFS和BFS

对于DFS深度优先搜索来说,这是树先序遍历的推广,按照递归,先沿着一条道走到黑,撞到南墙后,再返回一层,找另一条路继续走,不停返回,不停深入。

void DFS(ALGraph G, int v) {
    ArcNode *p = new ArcNode;  
    int w = 0; 
    cout << G.vertices[v].data << endl;
    visited[v] = true;
    p = G.vertices[v].firstarc;
    while (p != NULL) {
        w = p->adjvex;
        if (visited[w] == false) {
            DFS(G, w);
        }
        p = p->nextarc;
    }
}

另一个是BFS广度优先搜索,追求一个覆盖面积,在求最短路径或最优方案时进行使用有明显的优点。BFS利用队列,起始顶点先入队,对于每一个准备入队的顶点进行以下的操作:

1、先访问再入队 对出队元素x 的每个邻接点做判断,如果为访问,则访问后入队。

2、直接入队  对出队元素x 先判断是否访问,访问后,x 的邻接点入队。

 

因为对于图的知识掌握还不够牢固,觉得自己在这个ddl之前没有办法把PTA的代码写出来,所以重新看了一遍书,查了查CSDN上面一些大牛发布的教程还有心得,算是把课重新上了一遍复习了一遍,然后记录下一些重点的内容,这样做起题来效率就可以搞一些不用做一道题查一堆内容了。

 

第六章学习小结

原文:https://www.cnblogs.com/xhongk/p/10891085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!