1.图的基本定义
此处使用了字符作为顶点表存储的数据类型,整型作为边表 数据类型
typedef struct{
VertexType Vex[MaxVertexNum]; //顶点表
EdgeType Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵,边表
int vexnum,arcnum; //当前顶点数和弧数
}MGraph;
2.顶点插入和删除操作
插入操作
//插入顶点
void InsertVertex(MGraph *g,char x)
{
//printf("开始插入");
if(g->vexnum<100){
g->Vex[g->vexnum]=x;
g->vexnum++;
}
else{
printf("顶点存储已满,无法插入");
}
}
在删除操作时需要注意,与该顶点有关的边要全部删除,例如要删除b相关的边,则需要先删除与b相关的行再删除与其相关的列
删除一行后的矩阵,此时只剩下四行
删除一列后的矩阵
具体代码实现
//删除顶点(也会删除该顶点关联的边)
void DeleteVertex(MGraph *g,char x){
MGraph gr=*g;
int i=getVex(gr,x); //获取顶点对应的顶点表中的标号
if(i==-1){
printf("\n不存在这样的点,无法删除!\n");
return;
}else{
for(int s=0;s<g->vexnum;s++){
if(g->Edge[i][s]!=0){
g->arcnum--;
//printf("\nEdge[%d][%d],边数:%d",i,s,g->arcnum);
}
if(g->Edge[s][i]!=0