资源简介
|利用邻接矩阵创建图
|显示图的邻接矩阵
|求各顶点的度
|插入顶点
|插入弧
|删除顶点
|删除弧
|用邻接矩阵创建邻接表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
相关资源
- C流程图生成器,用C语言代码 生成C语
- 将图片转换为C语言数组的程序
- 电子时钟 有C语言程序,PROTEUS仿真图
- 用C语言进行数字图像处理
- Wi-Fi IoT智能家居套件-Hi3861(原理图
- Qt画图工具源码(qgraphics draw)
- Qt 实现心电图
- Qt实现 屏幕截图
- 使用QWT库实现接收串口数据,并根据
- 使用wxWidgets进行跨平台程序开发
- QT视频播放器(基于FFmpeg)
- ADS1263驱动程序+电路图
- 基于esp32的摄像头采集图像代码
- stm32f103c8t6开发板原理图+pcb
- 基于arduino的红绿灯程序,包附原理图
- 数据结构 图的遍历源代码
- qt处理图形
- H.264标准详细图解
- CreatBitmap图片合成源码
- 易语言png 多行多列切图
- basler相机图像采集和显示
- 交互式计算机图形学 第六版 OpenGL源代
- c++ 画图(14Qt-XPS)
- 图形学简单绘图系统
- mfc绘图大全(画直线、矩形、椭圆)
- C++调用百度地图案例
- opencv图片扫描以及校正
- MFC文档_视图_框架_模板结构体系深入
- 图像预处理五种滤波
- 思维导图(C++ Primer Plus(第六版).
评论
共有 条评论