public AMLGraph(char[] vertexs, Edge[] edges) {
// 1.设置顶点数组大小
vexNum = vertexs.length;
edgeNum = edges.length;
vexs = new vexNode[vexNum];
// 2.初始化顶点数组
for (int i = 0; i < vexNum; i++) {
vexs[i] = new vexNode();
vexs[i].data = vertexs[i];
vexs[i].firstEdge = null;
}
// 3.链接
for (int i = 0; i < edgeNum; i++) {
// 3.1 获取下标
char iData = edges[i].iData;
char jData = edges[i].jData;
int iVex = indexOfVex(iData);
int jVex = indexOfVex(jData);
// 3.2 逻辑
// 3.2.1 iVex, jVex,构造两个顶点的边
edgeNode edge = new edgeNode(iVex, jVex);
// 3.2.2 ilink
if (vexs[iVex].firstEdge == null) {
vexs[iVex].firstEdge = edge;
} else {
edgeNode nextEdge = vexs[iVex].firstEdge;
nextEdge.iLink = nextEdge;
vexs[iVex].firstEdge = edge;
}
// 3.2.3 jlink
if (vexs[jVex].firstEdge == null) {
vexs[jVex].firstEdge = edge;
} else {
edgeNode nextEdge = vexs[jVex].firstEdge;
nextEdge.jLink = nextEdge;
vexs[jVex].firstEdge = edge;
}
}
} // structure
建议看一下视频,一般文章都是静态的比较晦涩。
https://www.bilibili.com/video/BV1b7411N798?p=57