`
woxiaoe
  • 浏览: 277321 次
  • 性别: 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 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 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 Netty实现的可用于内网穿透的代理工具.zip

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

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

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

    基于Java的图形图像处理软件的设计与实现.pdf

    基于Java的图形图像处理软件的设计与实现.pdf基于Java的图形图像处理软件的设计与实现.pdf基于Java的图形图像处理软件的设计与实现.pdf基于Java的图形图像处理软件的设计与实现.pdf基于Java的图形图像处理软件的设计...

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

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

    淘宝中根据图片搜图片,基于Java语言实现的,相似图像识别准确率达95%

    经过公司CTO的帮助,完成了基于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的酒店客房管理系统的设计与实现.docx

    开题报告-基于Java的酒店客房管理系统的设计与实现.docx开题报告-基于Java的酒店客房管理系统的设计与实现.docx开题报告-基于Java的酒店客房管理系统的设计与实现.docx开题报告-基于Java的酒店客房管理系统的设计与...

    基于javacv实现图像拼接的源代码

    javacv3.1.0版本实现了图像拼接,底层采用了opencv3.1.0的dll,将dll拷贝到C:\windows\system32目录,工程采用netbeans开发,肯定可以编译运行

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

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

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

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

    基于java的医药管理系统设计与实现.doc

    基于java的医药管理系统设计与实现.doc 基于java的医药管理系统设计与实现.doc 基于java的医药管理系统设计与实现.doc 基于java的医药管理系统设计与实现.doc 基于java的医药管理系统设计与实现.doc 基于java的医药...

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

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

Global site tag (gtag.js) - Google Analytics