资源简介
|利用邻接矩阵创建图
|显示图的邻接矩阵
|求各顶点的度
|插入顶点
|插入弧
|删除顶点
|删除弧
|用邻接矩阵创建邻接表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
- 上一篇:简单的停车场收费 c++
- 下一篇:参考资料\\C++获取MP3文件信息.doc
相关资源
- JPEG图片EXIF信息提取及缩略图显示VC
- 图书管理系统C++65062
- MSR retinex图像增强处理
- Cohen-Sutherland 算法线段裁剪
- 基于MFC OpenGL读取obj文件并以双视图显
- 用C++,QT画分形图
- 基于暗通道和导向滤波的图像去雾算
- 根据原图和二值图得到分割彩图
- c#通过dll读取opencv里的mat图片
- 点云生成深度图,并保存深度图
- DICOM医学图像格式转换的C++实现
- 球的绘制与消隐
- 立方体的绘制与消隐
- 亚像素模板匹配—计算图像之间的亚
- 双目保存图片一根线输出两幅图像
- C语言课程设计报告-图书管理系统.z
- 图的深度遍历和广度遍历
- VC/MFC实现简单的Http服务器可访问图片
- 计算机图形学教程第二版实验生成“
- MFC画二维动态图表
- 汉诺塔的C语言可视化实现使用EasyX图
- C语言 小波变换 图像 去噪 源代码
- 计算机图形学图形的区域填充
- 计算机图形学正十二面体旋转
- 数字图像处理 印前输出 rip 数字加
- MFC文档视图指针相获取
- C语言C++魔兽全图源码
- c语言图书管理系统源码 c语言图书管
- 图像分割 grabcut C++版本的源码,包含
- ACM竞赛常用算法及代码
评论
共有 条评论