public void topoSort(){//仅仅针对有向图,基本思路是找到一个无后继的结点,将其删除,并放到排序数组的尾端,依次循环。直到没有结点。
int originalVertex = nVertex;
while(nVertex > 0){
int noSucVert = getNoSuccessorVertex();//获取一个无后继结点
if(noSucVert == -1){
System.out.println("graph have circle");
return;
}
sortArray[nVertex-1] = vertexList[noSucVert];//将待删除结点复制给排序数组
deleteVertex(noSucVert);//删除无后继结点
}
System.out.println(" topoSort:");
for(int i=0;i< originalVertex ; i++){
System.out.print(" "+sortArray[i].vertexName);
}
}
public int getNoSuccessorVertex(){
boolean isEndVertex = false;
for(int i=0; i < nVertex; i++){//对每一个顶点
isEndVertex = false;
for(int j=0; j< nVertex; j++){//若该结点的固定行,每一列有一个是1,说明该结点有后继,跳出循环
if(adjMatrix[i][j] == 1){
is