• 大小: 15KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签:   生成树  邻接表  

资源简介

|利用邻接矩阵创建图 |显示图的邻接矩阵 |求各顶点的度 |插入顶点 |插入弧 |删除顶点 |删除弧 |用邻接矩阵创建邻接表UDG |显示图的邻接表 |深度优先便利序列 |广度优先便利序列 |图的连通分支 |求最小生成树 |求任意顶点到其它顶点的最短路径 |求图的深度优先生成树 |对生成树进行先序遍历

资源截图

代码片段和文件信息

#include 
#include 
#include 
#define MAX_VERTEX_NUM 20
#define INFINITY 10000

typedef struct ArcCell{
int adj;
}ArcCellAdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct{
char vexs[MAX_VERTEX_NUM];
AdjMatrix arcs;
int vexnumarcnum;
}MGraph;

//……………………查询顶点位置…………………

int LocateVex(MGraph Gchar v){
int i=0;
while(G.vexs[i]!=v&&i i++;
return i;
}

//……………………创建图的邻接矩阵…………………

MGraph CreateMGraph(){
MGraph G;
int ijk;
int w;
char v1v2;
cout<<“请输入图的顶点数:“;
cin>>G.vexnum;
cout<<“请输入图的弧数:“;
cin>>G.arcnum;
for(i=0;i cout<<“请输入第“< cin>>G.vexs[i];
}
for(i=0;i for(j=0;j G.arcs[i][j].adj=INFINITY;
for(k=0;k cout<<“请输入弧“< cin>>v1>>v2>>w;
if(LocateVex(Gv1) i=LocateVex(Gv1);
else{
cout<<“没有找到此顶点!“< k--;
continue;
}
if(LocateVex(Gv2) j=LocateVex(Gv2);
else{
cout<<“没有找到此顶点!“< k--;
continue;
}
G.arcs[i][j].adj=w;
G.arcs[j][i]=G.arcs[i][j];
}

return G;
}

//……………………输出MGraph…………………

void PrintMGraph(MGraph G){
cout<<“-----------------图的邻接矩阵---------------“< int ij;
for(i=0;i cout<<“ “< cout< for( i=0;i cout< for( j=0;j if(G.arcs[i][j].adj!=INFINITY)
cout< else
cout<<“∞“<<“ “;
}
cout< }
cout<<“--------------------------------------------“<}

//……………………求各个顶点的度…………………

void Vdu(MGraph G){ //求各个顶点的度
int ij;
int V[20];
for(i=0;i int count=0;
for(j=0;j if(G.arcs[i][j].adj!=INFINITY)
count++;
V[i]=count;
}
for(i=0;i cout<}

//……………………插入顶点…………………

void InsertVex(MGraph &G){
char v;
int ij;
cout<<“请输入你想插入的顶点:“;
cin>>v;
i=G.vexnum++;
G.vexs[i]=v;
for(j=0;j G.arcs[i][j].adj=INFINITY;
j=G.vexnum-1;
for(i=0;i G.arcs[i][j].adj=INFINITY;
cout<}

//……………………插入弧…………………

void InsertArc(MGraph &G){
char v1v2;
int ijw;
cout<<“请输入你要插入的弧所关联的顶点和权值:“;
cin>>v1>>v2>>w;
if(LocateVex(Gv1) i=LocateVex(Gv1);
j=LocateVex(Gv2);
G.arcs[i][j].adj=w;
G.arcs[j][i]=G.arcs[i][j];
cout< }else{
cout<<“没有找到关联的顶点!“< }
}

//……………………删除顶点…………………

void DeleteVex(MGraph &G){
int ij;
char v;
cout<<“请输入你所要删除的顶点:“;
cin>>v;
if(LocateVex(Gv) int l=LocateVex(Gv);
for(i=l;i G.vexs[i]=G.vexs[i+1];
for(i=l;i for(j=0;j G.arcs[i][j]=G.arcs[i+1][j];
for(i=0;i

评论

共有 条评论