标签:关联 code 编程 any 小问题 起点 top 评分 并且
1、顶点(vertex)
2、边(edge)
3、同构(Isomorphism )
4、有向/无向图(Directed Graph/ Undirected Graph)
5、常用的图算法:
问题1解决方案:图是非线性结构,在进行排序和查找的时候时间复杂度更低,且稳定性更高一点
问题2解决方案:从图的某个顶点v出发,访问此顶点,然后从v的未被访问过的邻接点出发深度优先遍历图,直至图中的所有和v有路径相通的顶点都被访问到(对于连通图来讲)
广度优先遍历中,顶点进入队列然后标记为已访问,然后开始循环,该循直持续到队列为空时停止,在这个循环中,从队列中取出这个首顶点,并将它添加到 resultList的末端
而深度优先遍历不同的就在这里:在顶点尚未添加到 resultList之前,并不想标记该顶点为visited
public int topologicalSort() {
int index = 0;
int num = mVexs.size();
int[] ins; // 入度数组
char[] tops; // 拓扑排序结果数组,记录每个节点的排序后的序号。
Queue<Integer> queue; // 辅组队列
ins = new int[num];
tops = new char[num];
queue = new LinkedList<Integer>();
// 统计每个顶点的入度数
for(int i = 0; i < num; i++) {
ENode node = mVexs.get(i).firstEdge;
while (node != null) {
ins[node.ivex]++;
node = node.nextEdge;
}
}
// 将所有入度为0的顶点入队列
for(int i = 0; i < num; i ++)
if(ins[i] == 0)
queue.offer(i); // 入队列
while (!queue.isEmpty()) { // 队列非空
int j = queue.poll().intValue(); // 出队列。j是顶点的序号
tops[index++] = mVexs.get(j).data; // 将该顶点添加到tops中,tops是排序结果
ENode node = mVexs.get(j).firstEdge;// 获取以该顶点为起点的出边队列
// 将与"node"关联的节点的入度减1;
// 若减1之后,该节点的入度为0;则将该节点添加到队列中。
while(node != null) {
// 将节点(序号为node.ivex)的入度减1。
ins[node.ivex]--;
// 若节点的入度为0,则将其"入队列"
if( ins[node.ivex] == 0)
queue.offer(node.ivex); // 入队列
node = node.nextEdge;
}
}
if(index != num) {
System.out.printf("Graph has a cycle\n");
return 1;
}
// 打印拓扑排序结果
System.out.printf("== TopSort: ");
for(int i = 0; i < num; i ++)
System.out.printf("%c ", tops[i]);
System.out.printf("\n");
return 0;
}
(statistics.sh脚本的运行结果截图)
上周无测试
正确使用Markdown语法(加1分):
不使用Markdown不加分
有语法错误的不加分(链接打不开,表格不对,列表不正确...)
排版混乱的不加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
经过本周的学习,我对曾经学过的知识有了更深一步的了解同时对数据查找和排序等方法的应用也更加熟悉,同时也弄懂了一些过去不是很懂的知识点可谓是受益匪浅。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 126/126 | 2/2 | 20/20 | |
第二周 | 0/126 | 2/2 | 20/40 | |
第三周 | 353/479 | 2/6 | 20/60 | |
第四周 | 1760/2239 | 2/8 | 30/90 | |
第五周 | 1366/3615 | 2/10 | 20/110 | |
第六周 | 534/4149 | 2/12 | 20/130 | |
第七周 | 2800/6949 | 2/12 | 20/150 | |
第八周 | 883/7832 | 2/14 | 20/170 | |
第九周 | 2550/10382 | 2/16 | 20/190 | |
第十周 | 2219/12601 | 2/18 | 20/210 |
学号20182317 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结
标签:关联 code 编程 any 小问题 起点 top 评分 并且
原文地址:https://www.cnblogs.com/pytznb/p/11963738.html