题目:参照程序9.1~程序9.5,编写程序,完成邻接矩阵的初始化、撤销、边的搜索、插入、删除等操作。
部分代码:
邻接矩阵的结构体定义:
//邻接矩阵的结构体定义
typedef struct{
ElemType **a; //邻接矩阵
int n; //图的当前顶点数
int e; //图的当前边数
ElemType noEdge; //两顶点间无边时的值
}mGraph;
邻接矩阵的初始化:
//邻接矩阵的初始化
Status Init(mGraph *mg,int nSize,ElemType noEdgeValue){
int i,j;
mg->n = nSize; //初始化顶点数
mg->e = 0; //初始化时没有边
mg->noEdge = noEdgeValue; //初始化没有边时的取值
mg->a = (ElemType**)malloc(nSize*sizeof(ElemType *)); //生成长度为n的一维指针数组
if(!mg->a) return ERROR;
for(i = 0;i < mg->n;i ++){ //动态生成二维数组
mg->a[i] = (ElemType*)malloc(nSize*sizeof(ElemType));
for(j = 0;j < mg->n;j ++){
mg->a[i][j] = mg->noEdge; //初始化时权重都设为-1
}
mg->a[i][i] = 0; //自回路设置为0
}
return OK;
}
邻接矩阵的撤销:
//邻接矩阵的撤销(改成了int型,有返回值),先释放一维数组,再释放指针数组
int Destory(mGraph *mg){
int i;
for(i = 0;i < mg->