/**
* 删除一个节点
* @param delVertex
*/
public void deleteVertex( int delVertex )
{
if ( delVertex != nVerts-1 )//如果不是最后一个节点
{
//在节点列表中删除这个节点,所有后面的节点前移一格
for ( int i = delVertex; i nVerts-1; i++ )
{
vertexList = vertexList[i+1];
}
// 删除邻接矩阵的delVertex行和列,即所有后面的行和列都向前移动一格
// 所有delVertex行后的行,向上一个格
for ( int row = delVertex; row nVerts - 1; row++ )
{
for ( int column = 0; column nVerts; column++ )
{
adjMat[row][column] = adjMat[row + 1][column];
}
}
// 所有delVertex列后的列,向左一个格
for ( int column = delVertex; column nVerts; column++ )
{
for ( int row = 0; row nVerts - 1; row++ )
{
adjMat[row][column] = adjMat[row][column+1];
}
}
}
nVerts--;//减少一个节点
}
/**
* 添加一个节点
*
* @param lab
*/
public void addVertex( char lab ) // argument is label
{
vertexList[nVerts++ ] = new Vertex( lab );
}
/**
* 添加一条边
*
* @param start
* 起始点
* @param end
* 终点
*/
public void addEdge( int start, int end )
{
adjMat[start][end] = 1;
}
/**
* 添加一条边
*
* @param start
* 起始点
* @param end
* 终点
*/
public void addEdge( char startVertex, char endVertex )
{
int start = getIndexByLabel( startVertex );
int end = getIndexByLabel( endVertex );
if ( -1 != start && -1 != end )
{
adjMat[start][end] = 1;
}
}
/**
* 显示一个节点
*
* @param v
*/
public void displayVertex( int v )
{
System.out.print( vertexList[v].label );
}
public int getIndexByLabel( char lable )
{
for ( int i = 0; i vertexList.length; i++ )
{
if ( lable == vertexList.label )
{
return i;
}
}
// 没有这个节点
return -1;
}
}