diff --git "a/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/EdgeElement.java" "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/EdgeElement.java" new file mode 100644 index 0000000000000000000000000000000000000000..665dbd17c8a7f09f9f0c88a76cb01f3e8f04ddd3 --- /dev/null +++ "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/EdgeElement.java" @@ -0,0 +1,44 @@ +package com.company; + + + +//边集数组 ,存放边的信息 + +//邻域数组表示 和 邻域表表示 是两种不同的表示方式 + +//表示的是插入边的元素,边的起点和终点 边的权重 + +public class EdgeElement { + + int fromvex; + + int endvex; + + int weight; + + + public EdgeElement(int v1,int v2){ + +//对于无权重图的初始化 + + fromvex=v1; + + endvex=v2; + + weight=1; + + } + + public EdgeElement(int v1,int v2,int wgt){ + +//对于有权重图的初始化 + + fromvex=v1; + + endvex=v2; + + weight=wgt; + + } + +} \ No newline at end of file diff --git "a/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/EdgeNode.java" "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/EdgeNode.java" new file mode 100644 index 0000000000000000000000000000000000000000..65305594f27a9dabcf5d73bc4ffd2ee0984d5e93 --- /dev/null +++ "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/EdgeNode.java" @@ -0,0 +1,39 @@ +package com.company; + +//定义邻接表类型 + +public class EdgeNode{ + +//需要一个存储自身结点 + + int adjvex; + + int weight; + + EdgeNode next; + +//无权图 + + public EdgeNode(int adj,EdgeNode nt){ + + this.adjvex=adj; + + this.next=nt; + + this.weight=1; + + } + +//有权图 + + public EdgeNode(int adj,int wgt,EdgeNode nt){ + + this.adjvex=adj; + + this.weight=wgt; + + this.next=nt; + + } + +} \ No newline at end of file diff --git "a/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/Graph.java" "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/Graph.java" new file mode 100644 index 0000000000000000000000000000000000000000..2c6d804091141bd975d05bea8e512a9f83524721 --- /dev/null +++ "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/Graph.java" @@ -0,0 +1,31 @@ +package com.company; + +public interface Graph { + + void creatGraph(EdgeElement d[]); //通过边结点来构建一个图 + + Graph graphType(); //返回图的类型 无向无权图 无向有权图 有向无权图 有向有权图 定义一个枚举变量 + + int vertices(); //返回图的顶点数 + + int edges(); //返回图的边数 + + boolean find(int i,int j); //从图中查找一条边(i,j)是否存在 + + void putEdge(EdgeElement theEdge); //像图中插入一条边 theEdge + + void removeEdge(int i,int j); //从图中删除一条边 + + int degree(int i); //返回顶点i的度 + + int inDegree(int i); //返回顶点i的入度 + + int outDegree(int i); //返回顶点i的出度 + + void output(); //以图的顶点集和边集的形式输出一个图 + + void depthFirstSearch(int v); //从顶点v开始深度优先搜索整幅图 + + void breadthFirstSearch(int v); //从顶点v开始广度优先搜索整幅图 + +} \ No newline at end of file diff --git "a/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/graphTraverse.java" "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/graphTraverse.java" new file mode 100644 index 0000000000000000000000000000000000000000..85a66666671276dc0b4484a0064813bab6cfef7b --- /dev/null +++ "b/\345\256\211\350\257\246\345\234\260\344\275\234\344\270\232\345\223\245!/com/company/graphTraverse.java" @@ -0,0 +1,99 @@ +package com.company; + +import java.util.LinkedList; +import java.util.Queue; + +public class graphTraverse { + + private static String[] node; //存储节点编号 + private static int[][] arc; //存储边 + private static boolean[] flag;//存储节点是否被访问过 + + //深度优先遍历 + private void depthFirstTraversal() + { + flag = new boolean[node.length]; + for( int i=0;i qu = new LinkedList(); + /*Queue是接口,只能new一个它的实现类, + LinkedList实现了Queue */ + flag = new boolean[node.length]; + for( int i=0;i