数据结构——图

本文介绍了图数据结构的实现思路,包括创建顶点类、邻接表、Edge类以及迭代器Iterator。顶点类包含边的操作,如添加边、遍历节点。迭代器用于遍历邻接表。图类使用HashMap存储顶点,并提供了插入边、查找边等方法。最后,通过图的接口实现了深度优先遍历和广度优先遍历。
摘要由CSDN通过智能技术生成

感谢大牛关于图类的创建:https://www.cnblogs.com/hapjin/p/4760934.html.
思路大概是:
1.创建顶点类,每个顶点有自身标识(或value)
2.该顶点类中包含Edge类,以每个顶点对象为首,创建邻接表,表中元素为Edge对象,Edge类中包含终点节点以及边的权重;
3.顶点类中包含了对于顶点的操作,有添加边,遍历节点,该节点是否被访问,寻找未被访问的邻接点;当前节点的前继等操作;
4.遍历过程中使用了迭代器Iterator,其中创建Iterator<VertexInterface>类,该类中有可以访问Edge的Iterator,类中重新定义hasNext();next();函数;通过创建Iterator<VertexInterface>对象,便可得到遍历邻接表的迭代器;
5.通过迭代器查找边,插入边,寻找访问的邻接边等功能;
6.创建图类,定点类的对象在图类中用map<>容器存储;map使用hash表进行数据的存储;
7.图类中有返回顶点个数,边数,插入边,查找边,清空,初始化等功能;

通过创建图的接口,并用图类数据结构实现图的深度优先遍历(DFT)和广度优先遍历(BFT)
代码段如下:

	//深度优先遍历近似为树的前序遍历;
	/*
	 * 通过队列,堆栈辅助实现DFT(non-Javadoc)
	 * 将初始节点压入堆栈,标记为已访问,同时入队
	 * 访问栈顶节点,寻找栈顶节点相邻未访问节点,入栈,此时将站顶节点设为已访问,同时入队;
	 * 重复上一步,直至栈空;
	 * 返回队列,依次出队,即为深度优先遍历顺序;
	 * @see GraphInterface#getDepthFirstTraversal(java.lang.Object)
	 */
	public Queue<T> getDepthFirstTraversal(T origin) {
   
		// TODO Auto-generated method stub
		resetVertices();
		LinkedList<VertexInterface<T>> vertexStack=new LinkedList<>();//辅助DFS递归遍历
		Queue<T> traversalOrder=new LinkedList<>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值