图论是一个很重要的工具,这节主要是图的创建和遍历的Java代码,不讲理论,只撸代码,理论网上很多,具体一步步该怎么走,其他的贴子也都给全了,但是都是c语言,我们用Java实现和模拟图论。
内容有点多,给个目录:
目录:
1. 图结点的创建
2. 图的创建
2.1 图的结构和初始化
2.2 邻接矩阵
2.3 邻接表
3. 邻接表的两种遍历
3.1 深度优先遍历(邻接表)
3.1.1 递归算法(邻接表)
3.1.2 非递归算法(邻接表)
3.2 广度优先遍历(邻接表)
4. 邻接矩阵的两种遍历
4.1 深度优先遍历(邻接矩阵)
4.1.1 递归算法(邻接矩阵)
4.1.2 非递归算法(邻接矩阵)
4.2 广度优先搜索(邻接矩阵)
5. 项目完整代码
1. 图结点的创建
public
2. 图的创建
2.1 图的结构和初始化
import
2.2 邻接矩阵
// 邻接矩阵创建(有向图)
2.3 邻接表
// 邻接表创建
3. 邻接表的两种遍历
flag属性用来标记结点有没有被访问过,所以需要初始化。
// 初始化访问标记
3.1 深度优先遍历(邻接表)
3.1.1 递归算法(邻接表)
// 深度优先遍历(从head结点开始) 递归算法 邻接表
3.1.2 非递归算法(邻接表)
用到的栈,定义在文章最后完整项目代码中有,这块只是引用。
// 深度优先遍历(从head结点开始) 非递归算法 邻接表
3.2 广度优先遍历(邻接表)
因为广度优先遍历需要用到队列,所以不能递归,递归只能是用到栈时才能。
用到的队列,定义在文章最后完整项目代码中有,这块只是引用。
void
4. 邻接矩阵的两种遍历
4.1 深度优先遍历(邻接矩阵)
4.1.1 递归算法(邻接矩阵)
// 深度优先遍历(从0号结点开始) 递归算法 邻接矩阵
4.1.2 非递归算法(邻接矩阵)
用到的栈,定义在文章最后完整项目代码中有,这块只是引用。
// 深度优先遍历(从0号结点开始) 非递归算法 邻接矩阵
4.2 广度优先搜索(邻接矩阵)
因为广度优先遍历需要用到队列,所以不能递归,递归只能是用到栈时才能。
用到的队列,定义在文章最后完整项目代码中有,这块只是引用。
// 广度优先遍历(从0号结点开始) 非递归算法 邻接矩阵
5. 项目完整代码
项目的代码比较多,主要有下面几个类,防止查找麻烦,目录如下:
目录:
- class Node 结点定义
- class Seqqueue 队列定义
- class Seqstack 栈的定义
- class Graph 图的定义及操作
- class Client 测试类
内容:
- //class Node 结点定义
package
2. //class Seqqueue 队列定义
package
3. //class Seqstack 栈的定义
package
4. //class Graph 图的定义及操作
package
5. //class Client 测试类(里面有邻接表和邻接矩阵 的全部操作测试,需要那个,把剩余的注释就行)
package