課本第十九章主要學習無向圖、有向圖、帶權圖、經常使用圖的算法、圖的實現。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 | 因爲大做業的存在,我已經不知道本身在這門課上花了多少時間了 |