实现一个基本图
来源:互联网 发布:vi保存退出ubuntu 编辑:程序博客网 时间:2024/06/06 03:53
import java.util.LinkedList;
//稀疏图的顶点类
class Vertex {
LinkedList list;
}
class SparseGraph {
int v, e = 0;
private boolean directed;
private Vertex[] g;
public SparseGraph(int v, boolean directed) { this.v = v; this.directed = directed; g = new Vertex[v]; for (int i = 0; i < v; i++) { g[i] = new Vertex(); g[i].list = new LinkedList<Integer>(); }}public int E() { return e;}public int V() { return v;}public void addEdge(int v1, int v2) { if (v1 < v && v2 < v && v1 >= 0 && v2 >= 0) { g[v1].list.add(v2); // v1 != v2自环边 if (v1 != v2 && !directed) g[v2].list.add(v1); e++; }}public boolean hasEdge(int v1, int v2) { if (v1 > v && v2 > v && v1 < 0 && v2 < 0) return false; for (int i = 0; i < g[v1].list.size(); i++) if (g[v1].list.get(i) == v2) return true; return false;}public void print() { for (int i = 0; i < g.length; i++) { System.out.print(i+"->"); for (int j = 0; j < g[i].list.size(); j++) { if (j == g[i].list.size() - 1) System.out.print(g[i].list.get(j)); else System.out.print(g[i].list.get(j)+"->"); } System.out.println(); }}
}
public class DenseGraph {
private int v, e = 0;
private boolean directed;
private boolean[][] g;
public DenseGraph(int v, boolean directed) { this.v = v; this.directed = directed; g = new boolean[v][v]; for (int i = 0; i < v; i++) for (int j = 0; j < v; j++) g[i][j] = false;}public static void main(String[] args) { DenseGraph graph = new DenseGraph(10, false); graph.addEdge(1, 2); int vertex = graph.V(); int edge = graph.E(); boolean bool = graph.hasedge(1, 2); boolean bool2 = graph.hasedge(2, 1); System.out.println(vertex + "," + edge + "," + bool + "," + bool2); graph.print(); SparseGraph graph2 = new SparseGraph(10, false); graph2.addEdge(1, 2); int edge2 = graph2.E(); int vertex2 = graph2.V(); boolean bool3 = graph2.hasEdge(1, 2); boolean bool4 = graph2.hasEdge(2, 1); System.out.println(vertex2 + "," + edge2 + "," + bool3 + "," + bool4); graph2.print();}private void print() { System.out.print("\t"); for (int i = 0; i < g.length; i++) System.out.print(i + "\t"); System.out.println(); for (int i = 0; i < g.length; i++) { System.out.print(i + "\t"); for (int j = 0; j < g.length; j++) System.out.print(g[i][j]+"\t"); System.out.println(); }}private boolean hasedge(int v1, int v2) { if (v1 > v && v2 > v && v1 < 0 && v2 < 0) return false; return g[v1][v2];}private void addEdge(int v1, int v2) { if (v1 < v && v2 < v && v1 >= 0 && v2 >= 0) { if (!hasedge(v1, v2)) { e++; g[v1][v2] = true; if (!directed) g[v2][v1] = true; } }}private int E() { return e;}private int V() { return v;}
}
阅读全文
0 0
- 实现一个基本图
- 实现一个基本的数据库
- 图的基本实现
- 一个XMPP客户端需要实现的基本的XEP
- 详解如何实现一个基本的Android用户界面
- 一个XMPP客户端需要实现的基本的XEP
- 一个最大堆的实现(最基本的功能)
- 【SAP UI】实现一个最基本的SALV
- 编写一个程序,实现顺序表的各种基本运算
- 编写一个程序,实现单链表的各种基本运算
- 编写一个程序,实现顺序栈的各种基本运算。
- 编写一个程序,实现链栈的各种基本运算
- 编写一个程序,实现链队的各种基本运算
- socket实现的一个基本点对点聊天程序
- 【Java】编写一个方法,实现基本的字符串压缩功能
- 一个小学生练习题 能实现基本的加减乘除
- 编写一个程序实现顺序串的各项基本运算
- 编写一个程序实现链串的各项基本运算
- 称硬币
- ROS中常用的一些命令
- 强化学习笔记
- linux第一天(基础知识梳理)
- Java生成和操作Excel文件
- 实现一个基本图
- 剑指offer——面试题58:二叉树的下一个结点
- Oracle系统表整理 搜索方便
- GY_情感分析
- Fibonacci 动态规划
- bower安装好了angular 1.6.6,但是还是不能使用angular
- 随便输入一个数,从0到n的偶数之和
- 最终版】BurpSuite_Pro 1.7.27 Pro 破解版
- 简单的三角形