From 3f9856709d092e8bb2eb125b49a87dfe4cc30a78 Mon Sep 17 00:00:00 2001 From: stefanzan Date: Wed, 30 Dec 2020 10:52:18 +0800 Subject: [PATCH 1/2] update README.md. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c7dc5aa..7c746b8 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ### 截止日期 -2021.1.6 +2021.1.13 ### 基础 -- Gitee From c4d21204d0d4d02e4cdeffd57edfde5a26315678 Mon Sep 17 00:00:00 2001 From: thresh1v <736825256@qq.com> Date: Thu, 7 Jan 2021 18:20:59 +0800 Subject: [PATCH 2/2] Gwork --- GraphNode.java | 33 ++++++++++++++++++++++ GraphUtils.java | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ Main.java | 28 +++++++++++++++++++ 3 files changed, 134 insertions(+) create mode 100644 GraphNode.java create mode 100644 GraphUtils.java create mode 100644 Main.java diff --git a/GraphNode.java b/GraphNode.java new file mode 100644 index 0000000..9b014c4 --- /dev/null +++ b/GraphNode.java @@ -0,0 +1,33 @@ +public class GraphNode { + private int id; + private boolean isVisited; + + public GraphNode(int id) { + this.id = id; + this.isVisited = false; + } + + @Override + public String toString() { + return "GraphNode{" + + "id=" + id + + ", isVisited=" + isVisited + + '}'; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public boolean isVisited() { + return isVisited; + } + + public void setVisited(boolean visited) { + isVisited = visited; + } +} \ No newline at end of file diff --git a/GraphUtils.java b/GraphUtils.java new file mode 100644 index 0000000..deff738 --- /dev/null +++ b/GraphUtils.java @@ -0,0 +1,73 @@ +import java.util.ArrayList; +import java.util.List; + +public class GraphUtils { + + public static int[][] tableToMatrix(List> lists) { + int len = lists.size(); + int[][] matrix = new int[len][len]; + for (int i = 0; i < len; i++) { + List list = lists.get(i); + for (GraphNode node : list) { + matrix[i][node.getId()] = 1; + } + } + return matrix; + } + + + public static List> matrixToTable(int[][] matrix) { + List> lists = new ArrayList<>(); + GraphNode[] nodes = new GraphNode[matrix.length]; + for (int i = 0; i < nodes.length; i++) { + nodes[i] = new GraphNode(i); + } + for (int[] ints : matrix) { + List list = new ArrayList<>(); + for (int j = 0; j < ints.length; j++) { + if (ints[j] != 0) { + list.add(nodes[j]); + } + } + lists.add(list); + } + return lists; + } + + + public static void depthFirstTraversal(List> lists) { + for (int i = 0; i < lists.size(); i++) { + List list = lists.get(i); + for (int j = 0; j < list.size(); j++) { + depthFirstTraversal(lists, list.get(j)); + } + } + } + + private static void depthFirstTraversal(List> lists, GraphNode node) { + if (!node.isVisited()) { + node.setVisited(true); + System.out.print(node.getId() + " "); + List list = lists.get(node.getId()); + for (int i = 0; i < list.size(); i++) { + depthFirstTraversal(lists, list.get(i)); + } + } + } + + + public static void breadthFirstTraversal(List> lists) { + for (int i = 0; i < lists.size(); i++) { + List list = lists.get(i); + for (int j = 0; j < list.size(); j++) { + GraphNode node = list.get(j); + if (!node.isVisited()) { + node.setVisited(true); + System.out.print(node.getId() + " "); + } + } + } + } + + +} \ No newline at end of file diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..b1d43b1 --- /dev/null +++ b/Main.java @@ -0,0 +1,28 @@ +import java.util.ArrayList; +import java.util.List; + + +public class Main { + public static void main(String[] args) { + int[][] table = { + {0, 0, 0, 1, 0, 0}, + {0, 0, 0, 1, 1, 0}, + {1, 0, 0, 1, 0, 1}, + {0, 1, 0, 0, 1, 0}, + {0, 0, 0, 1, 0, 1}, + {0, 0, 1, 0, 1, 0} + }; + List> lists = GraphUtils.matrixToTable(table); + int[][] table2 = GraphUtils.tableToMatrix(lists); + for (int i = 0; i < table2.length; i++) { + for (int j = 0; j < table2[i].length; j++) { + System.out.print(table2[i][j] + ", "); + } + System.out.println(); + } + System.out.print("Éî¶ÈÓÅÏȱéÀú: "); + GraphUtils.depthFirstTraversal(GraphUtils.matrixToTable(table)); + System.out.print("\n¹ã¶ÈÓÅÏȱéÀú: "); + GraphUtils.breadthFirstTraversal(GraphUtils.matrixToTable(table)); + } +} \ No newline at end of file -- Gitee