课本第十九章主要学习无向图、有向图、带权图、经常使用图的算法、图的实现。git
图的实现策略:用邻接列表或者邻接矩阵等。有向图和无向图是不一样的。算法
public void createGraph(int num, Graph2 adj) { Vexs = new Node[num]; vexnum = num; for (int i = 0; i < num; i++) { Vexs[i] = new Node(); Vexs[i].name = "V" + "" + (i+1); for (int j = 0; j < num; j++) { if (adj.adjMatrix[i][j] != 0) { Node temp1 = new Node(); temp1.name = "V" + "" + (j+1); Node temp2 = Vexs[i]; while (temp2.next != null) { temp2 = temp2.next; } temp2.next = temp1; } } } }
// 邻接表的BFS public void Graph1BFS() { int[] visited = new int[vexnum];// 判断是否访问 System.out.println("想要从哪一个节点开始遍历:"); int v_num = input.nextInt(); while (v_num < 1 || v_num > vexnum) { System.out.println("范围不符合,请从新输入:"); v_num = input.nextInt(); } // Queue Q = new Queue();// 辅助队列初始化 Q.push(v_num);// 开始节点入队 System.out.print("V" + v_num); visited[v_num - 1] = 1; Node temp; while (Q.top != 1) { v_num = Q.pop(); temp = Vexs[v_num - 1]; while (temp.next != null) { temp = temp.next; String s = temp.name.substring(1); //获取结点名字的数字序号 if(visited[Integer.parseInt(s) - 1]==0) { Q.push(Integer.parseInt(s));// 该节点入队 System.out.print(" --> " + temp.name); visited[Integer.parseInt(s) - 1] = 1; } } } System.out.println(); }
public void createGraph2() { System.out.println("请输入结点数:"); num1 = input.nextInt(); System.out.println("请输入边数:"); num2 = input.nextInt(); adjMatrix = new int[num1][num1]; int i = 0; int vexA, vexB; while (i < num2) { System.out.println("请输入相链接的结点"); vexA = input.nextInt(); while (vexA < 1 || vexA > num1) { System.out.println("范围不符合,请从新输入:"); vexA = input.nextInt(); } vexB = input.nextInt(); while (vexB < 1 || vexB > num1) { System.out.println("范围不符合,请从新输入:"); vexB = input.nextInt(); } adjMatrix[vexA - 1][vexB - 1] = 1; adjMatrix[vexB - 1][vexA - 1] = 1; if (i == num2 - 1) { System.out.println("Ending!"); } else { System.out.println("Continue!"); } i++; } }
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 6000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 17/17 | |
第2、三周 | 556/756 | 3/5 | 31/48 | 明白了类与方法的关系,对Java编程的思想的了解有了一些进步 |
第四周 | 673/1429 | 2/7 | 12/60 | 对两段代码之间的关系了解了一些 |
第五周 | 1308/2737 | 2/9 | 25/85 | |
第六周 | 800/3537 | 2/11 | 18/103 | |
第七周 | 4195/7732 | 2/13 | 27/130 | |
第八周 | 489/8221 | 1/14 | 6/136 | |
第九周 | 2893/11114 | 3/17 | 30/166 | |
第十周 | 1405/12519 | 1/18 | 因为大做业的存在,我已经不知道本身在这门课上花了多少时间了 |