`
woxiaoe
  • 浏览: 284530 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

基于java的图的实现

阅读更多

数据结构(java)版今天看到了图那一章,也按着其大体思路编码。发现作者很多地方实现的很巧妙。

 

类图如下:


 

 

图的表示是基于邻接表实现。

 

EGraph中的vInfos存有当前图中所有的顶点。verMap为 T - Integer键值对,vertextCache为已删除节点的索引栈,但节点删除后只并没有将其从vInfos中移走,只是将其occupied属性值为false,同时将其从verMap中移走,将其索引压入栈中以便插入新节点是使用。


 VertexInfo为储存顶点信息,vertext储存顶点值,edgeList储存以该顶点为起始点的所有边信息。

Edge 为边信息,dest为该边中点在vInfos中的位置,weight为该边的权值。

 

 

 

  

 以下为针对这个图的测试

graph1.dat

 

5

A B C D E

6

A B 3

A C 2

B C 6

C B 4

C D 1

E B 5

 

package com.woxiaoe.ds.graph;

import java.io.File;
import java.util.Scanner;

import junit.framework.TestCase;

public class GraphTest extends TestCase {
	EGraph<String> graph = new EGraph<String>();
	@Override
	protected void setUp() throws Exception {
		Scanner scn = new Scanner(new File("graph1.dat"));

		int vertexNum,edgeNum;
		vertexNum = scn.nextInt();
		for(int i = 0 ; i < vertexNum; i++){
			graph.addVertex(scn.next());
		}
		edgeNum = scn.nextInt();
		for(int i = 0; i < edgeNum; i++){
			graph.addEdge(scn.next(), scn.next(), scn.nextInt());
		}
	}
	public void testReadGraph(){
		System.out.println("边数:" + graph.numberOfEdges());
		System.out.println("顶点数" + graph.numberOfVertices());
		System.out.println("C - D 权值 :" + graph.getWeight("C", "D"));
		graph.setWeight("C", "D", 10);
		System.out.println("更改后的 - D 权值 :" + graph.getWeight("C", "D"));
		System.out.println("删除C - D" + graph.removeEdge("C", "D"));
		System.out.println("删除C-D后边数:" + graph.numberOfEdges());
		System.out.println("删除C-D后顶点数:" + graph.numberOfVertices());
		System.out.println("删除顶点C:" + graph.removeVertex("C"));
		System.out.println("删除顶点C后边数:" + graph.numberOfEdges());
		System.out.println("删除顶点C后顶点数:" + graph.numberOfVertices());
		
	} 

}
 

Output:

边数:6 顶点数5 C - D 权值 :1 更改后的 - D 权值 :10 删除C - Dtrue 删除C-D后边数:5 删除C-D后顶点数:5 删除顶点C:true 删除顶点C后边数:2 删除顶点C后顶点数:4

 


  • 大小: 31.9 KB
  • 大小: 10.6 KB
分享到:
评论
4 楼 woxiaoe 2010-04-17  
ccxw1983 写道
测试的例子里面:
Scanner scn = new Scanner(new File("graph1.dat"));
改成这样比较好
Scanner scn = new Scanner(GraphTest.class.getResourceAsStream("graph1.dat")); 



       
       

3 楼 ccxw1983 2010-04-17  
测试的例子里面:
Scanner scn = new Scanner(new File("graph1.dat"));
改成这样比较好
Scanner scn = new Scanner(GraphTest.class.getResourceAsStream("graph1.dat")); 



       
       
2 楼 woxiaoe 2010-04-16  
whaosoft 写道
用不了啊 不知道怎么回事

你好,哪里报错了,我也去看看
1 楼 whaosoft 2010-04-16  
用不了啊 不知道怎么回事

相关推荐

    基于 Java Netty实现的可用于内网穿透的代理工具.zip

    基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于...

    基于Java NIO实现五子棋游戏.zip

    基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现五子棋游戏.zip基于Java NIO实现五子棋游戏.zip 基于Java NIO实现...

    基于Java Servlet实现的灾情控制系统.zip

    基于Java Servlet实现的灾情控制系统基于Java Servlet实现的灾情控制系统 基于Java Servlet实现的灾情控制系统基于Java Servlet实现的灾情控制系统 基于Java Servlet实现的灾情控制系统基于Java Servlet实现的灾情...

    毕设项目:基于Java技术实现的扫雷游戏

    毕设项目:基于Java技术实现的扫雷游戏 毕设项目:基于Java技术实现的扫雷游戏 毕设项目:基于Java技术实现的扫雷游戏 毕设项目:基于Java技术实现的扫雷游戏 毕设项目:基于Java技术实现的扫雷游戏 毕设项目:基于...

    基于Java Agent实现的自测联调Mock利器.zip

    基于Java Agent实现的自测联调Mock利器.zip基于Java Agent实现的自测联调Mock利器.zip基于Java Agent实现的自测联调Mock利器.zip基于Java Agent实现的自测联调Mock利器.zip基于Java Agent实现的自测联调Mock利器.zip...

    基于JAVA实现班主任管理系统(源代码+文档lunwen)

    基于JAVA实现班主任管理系统(源代码+文档lunwen) 基于JAVA实现班主任管理系统(源代码+文档lunwen) 基于JAVA实现班主任管理系统(源代码+文档lunwen) 基于JAVA实现班主任管理系统(源代码+文档lunwen) 基于JAVA实现班...

    java基于高德地图实现实时查询天气功能源代码.zip

    java基于高德地图实现实时查询天气功能源代码。基于高德地图实现实时查询天气功能,api二次开发java基于高德地图实现实时查询天气功能源代码。基于高德地图实现实时查询天气功能,api二次开发java基于高德地图实现...

    基于Java开发实现的自测联调Mock利器工具源码.zip

    基于Java开发实现的自测联调Mock利器工具源码.zip基于Java开发实现的自测联调Mock利器工具源码.zip基于Java开发实现的自测联调Mock利器工具源码.zip基于Java开发实现的自测联调Mock利器工具源码.zip基于Java开发实现...

    java毕业设计——基于java出租车计价器设计与实现(论文+答辩PPT+源代码+数据库).zip

    java毕业设计——基于java出租车计价器设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——基于java出租车计价器设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——基于java出租车计价器设计与...

    java实战项目-基于JavaSSM实现在线教育平台系统源码(含教程)-java毕设

    java实战项目-基于JavaSSM实现在线教育平台系统源码(含教程)-java毕设 技术栈: Java Spring SpringMVC MyBatis 基于Java+Spring+SpringMVC+MyBatis实现的在线教育平台系统源码,包含项目的开发教程,可以作为计算机...

    基于Java实现的SSM框架整合实战案例

    基于Java实现的SSM框架整合实战案例 基于Java实现的SSM框架整合实战案例 基于Java实现的SSM框架整合实战案例 基于Java实现的SSM框架整合实战案例 基于Java实现的SSM框架整合实战案例 基于Java实现的SSM框架整合实战...

    基于Java语言实现的主机入侵检测系统.rar

    基于Java语言实现的主机入侵检测系统

    基于Java实现的天猫营业执照图片识别完整源码.zip

    基于Java实现的天猫营业执照图片识别完整源码.zip基于Java实现的天猫营业执照图片识别完整源码.zip基于Java实现的天猫营业执照图片识别完整源码.zip基于Java实现的天猫营业执照图片识别完整源码.zip基于Java实现的...

    基于java实现的文本编辑器.zip

    基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java...

    Java毕业设计——基于Java的飞机大战游戏的设计与实现(论文+源代码+讲解视频).zip

    Java毕业设计——基于Java的飞机大战游戏的设计与实现(论文+源代码+讲解视频).zip Java毕业设计——基于Java的飞机大战游戏的设计与实现(论文+源代码+讲解视频).zip Java毕业设计——基于Java的飞机大战游戏的...

    基于Java实现的自动抢红包.zip

    抢红包基于Java实现的自动抢红包.zip基于Java实现的自动抢红包.zip基于Java实现的自动抢红包.zip基于Java实现的自动抢红包.zip基于Java实现的自动抢红包.zip基于Java实现的自动抢红包.zip基于Java实现的自动抢红包....

    基于java面向对象实现扫雷程序源码

    基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 ...

    基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip

    基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip 基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip 基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip 基于java的开发源码-基于Java实现的简单...

    基于Java的板卡及设备查询系统的实现

    基于Java的板卡及设备查询系统的实现 基于Java的板卡及设备查询系统的实现 基于Java的板卡及设备查询系统的实现 基于Java的板卡及设备查询系统的实现 基于Java的板卡及设备查询系统的实现 基于Java的板卡及设备查询...

    基于Java实现的GB28181平台源码.zip

    基于Java实现的GB28181平台源码.zip基于Java实现的GB28181平台源码.zip基于Java实现的GB28181平台源码.zip基于Java实现的GB28181平台源码.zip基于Java实现的GB28181平台源码.zip基于Java实现的GB28181平台源码.zip...

Global site tag (gtag.js) - Google Analytics