图的邻接矩阵表示
来源:互联网 发布:淘宝抢货神器 编辑:程序博客网 时间:2024/05/16 09:37
# include <stdio.h># include <malloc.h># include <memory.h># define MAX 10//最大顶点数 typedef struct{char vexs[MAX];//顶点向量 int arcs[MAX][MAX];//邻接矩阵 int vexnum,arcnum;//图的当前点数和弧数 }MGRAPH,* mgraph;void init_mgraph(mgraph &g)//初始化图 {int i;g = (mgraph)malloc(sizeof(MGRAPH));g->vexnum = 0;g->arcnum = 0;memset(g->vexs,0,sizeof(char)*MAX);for (i=0;i<MAX;++i){for (int j=0;j<MAX;++j){g->arcs[i][j] = 0;}}}void add_vexs(mgraph &g)//增加顶点 {printf ("请输入顶点的个数\n");scanf ("%d",&(g->vexnum));printf ("请输入顶点的值\n");for (int i=0; i<g->vexnum; ++i){scanf ("%d",&(g->vexs[i]));}}void add_arcs(mgraph &g)//增加边 {printf ("请输入边的个数\n");scanf ("%d",&(g->arcnum));char ch1,ch2;int row,col;for (int i=0;i<g->arcnum;++i){scanf ("%c %c",&ch1,&ch2);for (int j=0; j<g->vexnum; ++j){if (g->vexs[j] == ch1)row = j;if (g->vexs[j] == ch2)col = j;}g->arcs[row][col] = 1;//有向带权图只需把1改成weight g->arcs[col][row] = 1;//无向图加上此行 }}void creat_mgraph(mgraph &g)//创建图 {add_vexs(g);//增加顶点 add_arcs(g);//增加边 }void print_mgraph(mgraph &g)//打印图 {int i,j;for (i=0;i<g->vexnum;++i)scanf ("%c",&(g->vexs[i]));printf ("\n");for (i=0;i<g->vexnum;++i){printf ("%c ",g->vexs[i]);for (j=0;j<g->vexnum;++j)printf ("%d ",g->arcs[i][j]);printf ("\n");}}void delete_vex(mgraph &g,char ch)//删除顶点 {int row,i,j;for (i=0;i<g->vexnum;++i){if (g->vexs[i] == ch)row = i;}int arcs = 0;//记录删除顶点的弧数 for (i=0;i<g->vexnum;++i){if (g->arcs[row][i] == 1)arcs++;}for (i=0;i<g->vexnum;++i){for (j=row;j<g->vexnum-1;++j)g->arcs[i][j] = g->arcs[i][j+1];//把删除顶点右边的数据左移 g->arcs[i][j+1] = 0;}for (i=row;i<g->vexnum-1;++i){for (j=0;j<g->vexnum;++j){g->arcs[i][j] = g->arcs[i+1][j];//把删除顶点下面的数据上移 }g->arcs[i+1][j] = 0;}for (i=row;i<g->vexnum;++i)//把顶点数组中右边的数据左移 g->vexs[i] = g->vexs[i+1];g->vexnum = g->vexnum-1; //顶点个数减1 g->arcnum = g->arcnum-arcs;//总弧数减去要删除顶点的弧数 }int main (void){mgraph g;init_mgraph(g);//初始化图 creat_mgraph(g);//创建图 print_mgraph(g);//打印图 char ch;scanf ("%c",&ch);delete_vex(g,ch);//删除顶点 printf ("%d ",g->arcnum);printf ("%d\n",g->vexnum);print_mgraph(g);return 0;}
0 0
- 图的表示-邻接矩阵表示
- 图的邻接矩阵表示
- 图的邻接矩阵表示
- 图的邻接矩阵表示
- 图的表示--邻接矩阵
- 图的表示--邻接矩阵
- 图的邻接矩阵表示
- 图的邻接矩阵表示
- 图的邻接矩阵表示
- 图的邻接矩阵表示
- 数据结构,图的邻接矩阵表示
- 图的邻接矩阵表示法
- 简单的图邻接矩阵表示
- 图的邻接矩阵表示法
- 图的邻接矩阵表示法
- 表示图的静态邻接矩阵
- 数据结构-图的邻接矩阵表示
- 图的建立(邻接矩阵表示)
- 安卓欢迎界面的编写
- java基础-内存分配
- 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)
- 求素数,给你一个n,输出n以内的素数
- 网页元素的滑动事件(四)
- 图的邻接矩阵表示
- 协方差
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
- C++虚函数表详细解释及实例分析
- 通过 PCIE Inbound
- 8.cell重用
- “空”园三兄弟之nil和Nil及NUL
- 虚析构函数 和 纯虚析构函数
- 深度学习之Softmax回归