0001 /* 0002 * 基于邻接边表实现图的顶点结构 0003 */ 0004 0005 package dsa; 0006 0007 public class Vertex_List implements Vertex { 0008 //变量 0009 protected Object info;//当前顶点中存放的数据元素 0010 protected Position vPosInV;//当前顶点在所属的图的顶点表V中的位置 0011 protected List outEdges;//关联边表:存放以当前顶点为尾的所有边(的位置) 0012 protected List inEdges;//关联边表:存放以当前顶点为头的所有边(的位置) 0013 protected int status;//(在遍历图等操作过程中)顶点的状态 0014 protected int dStamp;//时间标签:DFS过程中该顶点被发现时的时刻 0015 protected int fStamp;//时间标签:DFS过程中该顶点被访问结束时的时刻 0016 protected int distance;//到指定起点的距离:BFS、Dijkstra等算法所确定该顶点到起点的距离 0017 protected Vertex bfsParent;//在最短距离树(BFS或BestFS)中的父亲 0018 0019 //构造方法:在图G中引入一个属性为x的新顶点 0020 public Vertex_List(Graph G, Object x) { 0021 info = x;//数据元素 0022 vPosInV = G.insert(this);//当前顶点在所属的图的顶点表V中的位置 0023 outEdges = new List_DLNode();//出边表 0024 inEdges = new List_DLNode();//入边表 0025 status = UNDISCOVERED; 0026 dStamp = fStamp = Integer.MAX_VALUE; 0027 distance = Integer.MAX_VALUE; 0028 bfsParent = null; 0029 } 0030 0031 //返回当前顶点的信息 0032 public Object getInfo() { return info; } 0033 //将当前顶点的信息更新为x,并返回原先的信息 0034 public Object setInfo(Object x) { Object e = info; info = x; return e; } 0035 0036 //返回当前顶点的出、入度 0037 public int outDeg() { return outEdges.getSize(); } 0038 public int inDeg() { return inEdges.getSize(); } 0039 0040 //返回当前顶点所有关联边、关联边位置的迭代器 0041 public Iterator inEdges() { return inEdges.elements(); } 0042 public Iterator inEdgePositions() { return inEdges.positions(); } 0043 public Iterator outEdges() { return outEdges.elements(); } 0044 public Iterator outEdgePositions() { return outEdges.positions(); } 0045 0046 //取当前顶点在所属的图的顶点集V中的位置 0047 public Position getVPosInV() { return vPosInV; } 0048 0049 //读取、设置顶点的状态(DFS + BFS) 0050 public int getStatus() { return status; } 0051 public int setStatus(int s) { int ss = status; status = s; return ss; } 0052 0053 //读取、设置顶点的时间标签(DFS) 0054 public int getDStamp() { return dStamp; } 0055 public int setDStamp(int s) { int ss = dStamp; dStamp = s; return ss; } 0056 public int getFStamp() { return fStamp; } 0057 public int setFStamp(int s) { int ss = fStamp; fStamp = s; return ss; } 0058 0059 //读取、设置顶点至起点的最短距离(BFS) 0060 public int getDistance() { return distance; } 0061 public int setDistance(int s) { int ss = distance; distance = s; return ss; } 0062 0063 //读取、设置顶点在的DFS、BFS、BestFS或MST树中的父亲 0064 public Vertex getBFSParent() { return bfsParent; } 0065 public Vertex setBFSParent(Vertex s) { Vertex ss = bfsParent; bfsParent = s; return ss; } 0066 }