邻接矩阵

试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc,相关定义如下:

typedef int VertexType;typedef enum{DG, UDG
}GraphType;typedef struct{VertexType vertex[MAX_VERTEX_NUM]; //顶点向量int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵int vexnum, arcnum;   //图的当前顶点数和弧数GraphType type;     //图的种类标志
}MatrixGraph;int matrix_locate_vertex(MatrixGraph *MG, VertexType vex); //返回顶点 v 在vertex数组中的下标,如果v不存在,返回-1
bool matrix_insert_vertex(MatrixGraph *G, VertexType v);
bool matrix_insert_arc(MatrixGraph *G, VertexType v, VertexType w);

注意注意!!!

当成功插入顶点或边时,函数返回true,否则(如顶点或边已存在、插入边时顶点v或w不存在)返回false。

参考代码如下:

#include <stdio.h>
#include "graph.h" // 请不要删除,否则检查不通过bool matrix_insert_vertex(MatrixGraph *G, VertexType v){int i;i = matrix_locate_vertex(G, v);if(i == -1 && G->vexnum < MAX_VERTEX_NUM - 1){G->vertex[G->vexnum++] = v;for(i = 0; i < G->vexnum; i++){G->arcs[i][G->vexnum -1] = 0;G->arcs[G->vexnum-1][i] = 0;}return true;}return false;
}bool matrix_insert_arc(MatrixGraph *G, VertexType v, VertexType w){int i, j;i = matrix_locate_vertex(G, v);j = matrix_locate_vertex(G, w);if(i == -1 || j == -1) return false;if(G->type == UDG &&( G->arcs[i][j] == 1 || G->arcs[j][i] == 1))return false;else if(G->arcs[i][j] == 1)   return false;if(G->type == UDG)G->arcs[j][i] = 1;G->arcs[i][j] = 1;G->arcnum++;return true;
}

数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding相关推荐

  1. 邻接表1试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下:icoding---算法改进--配详细注释

    邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType; typedef enum{DG, ...

  2. 邻接表2 -试在邻接表存储结构上实现图的基本操作 del_vertex-数据结构-图-icoding

    邻接表2 试在邻接表存储结构上实现图的基本操作 del_vertex,相关定义如下: typedef int VertexType;typedef enum{DG, UDG }GraphType;ty ...

  3. 邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding

    邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType;typedef enum{DG, U ...

  4. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?

    从今天开始,我们开始介绍图的相关算法 什么是"图" 1.背景 作为图的开始,我们先来看一个经典的问题,它被认为是图论的起源. 这个问题是基于一个现实生活中的事例:河中心有两个小岛. ...

  5. 数据结构大致包含以下几种存储结构:

    数据结构大致包含以下几种存储结构: 线性表,还可细分为顺序表.链表.栈和队列: 树结构,包括普通树,二叉树,线索二叉树等: 图存储结构: 线性表 线性表结构存储的数据往往是可以依次排列的,就像小朋友手 ...

  6. 数据结构--01|逻辑结构和物理结构(存储结构)

    数学结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等学科.        描述非数值问题的数学模型不是数学方程,而是诸如表.树和图之类的具有逻辑关系的数据. 1. 基 ...

  7. Python 数据结构 之 串 的链式存储结构

    本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的链式存储结构. 用Python仿照C语言来实现. 文章转载请注明:  Python 数据 ...

  8. 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)

    目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...

  9. 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)

    图(Graph)是一种非线性结构 图的特点(多对多),顶点之间的关系是任意的,图中任意两个顶点之间都可能相关,顶点的前驱和后继个数无限制. 图:数据元素间存在多对多关系的数据结构,加上一组基本操作构成 ...

最新文章

  1. 在docker镜像中加入环境变量
  2. vue init webpack缺少标识符_vue 如何从单页应用改造成多页应用_vue.js
  3. 智能合约WASM语言 (1)概述
  4. 【写实与风格化】技术概述
  5. SAP Spartacus table里显示较长数据时自动显示省略号的设置
  6. 网站本地调试工具_一款Web调试代理工具:Fiddler
  7. 企业微信加密消息体_微信公众平台开发者中心安全模式消息体加解密实现
  8. Java版二叉树遍历,查找,顺序化存储代码实现
  9. ubuntu16.04caffe训练mnist数据集
  10. style文件的指定
  11. 分享一下自己用c++写的小地图
  12. 数论 中国剩余定理(孙子定理)详解
  13. 自己用纯Java写的这款Mysql客户端工具美哭了,求收藏~
  14. 国二MySQL考些啥_国二考试时间 国二考试是什么
  15. Arch Linux stc-isp-wine AUR 包
  16. 贱人工具箱使用技巧6——制作表格和表格居中
  17. 支持APP的打印服务器,TP-LINK双频无线路由器打印服务器客户端软件
  18. 无线蓝牙耳机哪个品牌好?蓝牙降噪耳机品牌推荐
  19. 跳过休息日(周末和节假日)
  20. probuilder_使用ProBuilder自定义快照原型资产

热门文章

  1. [Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印
  2. 任务管理平台_jytask一个任务调度统一管理平台
  3. android 网卡监听,Android实时监听网络的变化
  4. lasso特征选择python_转:结合Scikit-learn介绍几种常用的特征选择方法-2
  5. el-popover超过固定高度后出现滚动条_「测绘精选」RTK测量不出现固定解的原因...
  6. 小小鸡蛋竟然能够承受1200kg重量!?
  7. 竟然能从一维空间变换为四维空间!?
  8. 神奇的机械动态图,看了一遍又一遍!最后一个真神奇~
  9. 揭秘神仙高校的课堂!网友跪了:这就是差距啊!
  10. 我居然从一只猫身上学到了斐波那契数列