标签:数组 感悟 第十周 需要 inf 节点 第四周 ade 链表
关于图的概念,老师在课堂上已经较为详细地说明过了,因此不再赘述。
重要的概念有:无向图、有向图、顶点、边……
与树的层序遍历相似,按照路径长度由小到大的顺序,优先遍历属于同一层的顶点。
运用迭代器、队列。
首先把开始顶点入队列,标记其为已访问,然后开始如下循环:
从队列中取一个顶点,将其添加到迭代器中,然后将这个顶点的所有未访问的邻接顶点入队列,同时将这些顶点标记为已访问,直到队列为空。
类似于树中的先序遍历,从开始顶点开始,一条路走到黑,一直往下访问顶点,直到没有下一个顶点可以访问。
和广度优先遍历类似,只需要把队列结构换成栈就行了。
邻接表是一种数组和链表结合的存储图的方法,和我们之前实现的哈希排序之链地址法有点相似。
邻接矩阵可用于表示有向图或无向图的连接情况,横纵坐标表示连接的两个结点,矩阵内可存入0,1或true,false来表示两节点是否有连接。在表示无向图连接的时候,矩阵是对称的。
在学习的时候感觉使用数组实现图的建立有很多模糊的地方,比如,邻接矩阵在存储无向图的时候是只用右上三角还是使用整个矩阵?
充分了解每个部分的功能。
一开始想用链表结构来实现PP19_1,但是最后发现在未知某个节点与多少个其他节点有连接的时候,确定下一个连接比较麻烦。
采用多个数组来实现图会更加方便。
在根据书上代码进行实现的时候,发现我的IDEA的ArrayIterator和书上的不太一样,需要加入参数才能使用。
把ArrayIterator替换成ArrayList,有同样的功能。
程序报错
查找CSDN
使用第二条方法。
上周无考试。
这周所学习的图与上周学习的树有很大关联,树本质上就是图,但是它们在构建和实现遍历的方面有有着些许不同。这周我理解的较为透彻的,能自己用代码实现的知识是图的深度和广度遍历,它们都很好地运用了我们之前学习的队列结构和栈结构。然而图在涉及权值和有向的情况下,构建情况就会变得更加复杂,我还需要进行深入学习。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 208/208 | 2/2 | 9/9 | |
第二周 | 258/466 | 2/4 | 15/24 | |
第三周 | 693/1159 | 2/6 | 22/46 | |
第四周 | 1383/2542 | 2/8 | 30/76 | |
第五周 | 1300/3842 | 2/10 | 22/98 | |
第六周 | 1998/5840 | 2/12 | 24/122 | |
第七周 | 2901/8741 | 2/14 | 30/152 | |
第八周 | 3556/12297 | 2/16 | 30/182 | |
第九周 | 12297/13394 | 3/19 | 32/214 |
标签:数组 感悟 第十周 需要 inf 节点 第四周 ade 链表
原文地址:https://www.cnblogs.com/leonzheng/p/11946209.html