使用邻接矩阵实现图结构

  关于图的一些特点就不说了,现在我们先展示的是顶点的实现

/**
 * Created by 西皮 on 2017/9/15 19:58.
 * 图的顶点类
 */
public class MyVertex<VItem> {
    private VItem data;//数据
    private int inDegree,outDegree;//出入度数
    private VStatus status;//状态
    private long dTime,fTime;//时间标签
    private int parent;//在遍历树中的父节点
    private int priority;//在遍历树中的优先级

    public MyVertex(VItem data){
        this.data = data;
        this.inDegree = 0;
        this.outDegree = 0;
        this.status = VStatus.UNDISCOVERED;
        this.dTime = -1;
        this.fTime = -1;
        this.parent = -1;
        this.priority = Integer.MAX_VALUE;
    }

    public VItem getData() {
        return data;
    }

    public void setData(VItem data) {
        this.data = data;
    }

    public int getInDegree() {
        return inDegree;
    }

    public void setInDegree(int inDegree) {
        this.inDegree = inDegree;
    }

    public int getOutDegree() {
        return outDegree;
    }

    public void setOutDegree(int outDegree) {
        this.outDegree = outDegree;
    }

    public VStatus getStatus() {
        return status;
    }

    public void setStatus(VStatus status) {
        this.status = status;
    }

    public long getdTime() {
        return dTime;
    }

    public void setdTime(long dTime) {
        this.dTime = dTime;
    }

    public long getfTime() {
        return fTime;
    }

    public void setfTime(long fTime) {
        this.fTime = fTime;
    }

    public int getParent() {
        return parent;
    }

    public void setParent(int parent) {
        this.parent = parent;
    }

    public int getPriority() {
        return priority;
    }

    public void setPriority(int priority) {
        this.priority = priority;
    }
}

  这里的属性,status使用的enum来标识的,三种顶点状态,分别是UNDISCOVEREDDISCOVEREDVISITED,分别用来表示未被发现,已被发现但是还未访问完毕,已经被访问完毕

/**
 * Created by 西皮 on 2017/9/16 9:49.
 * 定义顶点状态的枚举类
 */
public enum VStatus {
    UNDISCOVERED("UNDISCOVERED"),DISCOVERED("DISCOVERED"),VISITED("VISITED");

    private final String value;

    VStatus(String value){
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}

  接下来展示边

/**
 * Created by 西皮 on 2017/9/16 10:09.
 * 图的边类
 */
public class MyEdge<EItem> {
    private EItem data;//数据
    private int weight;//权重
    private EType type;//在便利书中所属的类型

    public MyEdge(EItem data,int weight){
        this.data = data;
        this.weight = weight;
        this.type = EType.UNDETERMINED;
    }

    public EItem getData() {
        return data;
    }

    public void setData(EItem data) {
        this.data = data;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    public EType <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值