文章目录

  • 1.什么是图?
  • 2.图的抽象数据结构
  • 3.如何在程序中表示一个图?
    • 3.1 邻接矩阵
    • 3.2 邻接表
  • 4.图的遍历
    • 4.1 深度优先搜索
    • 4.2 广度优先搜索
  • 5.图的C语言实现

1.什么是图?

2.图的抽象数据结构

3.如何在程序中表示一个图?

3.1 邻接矩阵

3.2 邻接表

4.图的遍历

4.1 深度优先搜索

4.2 广度优先搜索

5.图的C语言实现

#include<stdio.h>
#include<stdlib.h>#define WeightType int
#define MaxVertexNum 3
typedef struct GNode *PtrToGNode;
typedef PtrToGNode MGraph;
typedef int Vertex;
typedef struct ENode *PtrToENode;
typedef PtrToENode Edge;struct GNode{int Nv;  //顶点数int Ne;  //边数WeightType G[MaxVertexNum][MaxVertexNum];
};
struct ENode{Vertex V1,V2;WeightType Weight;
};//1.初始化
MGraph CreateGraph(int VertexNum)
{Vertex V,W;MGraph Graph;Graph=(MGraph)malloc(sizeof(struct GNode));Graph->Nv=VertexNum;Graph->Ne=0;for(V=0;V<Graph->Nv;V++){for(W=0;W<Graph->Nv;W++){Graph->G[V][W]=0;}}return Graph;
}//2.插入边
void InsertEdge(MGraph Graph,Edge E)
{//插入边<V1,V2>Graph->G[E->V1][E->V2]=E->Weight;//无向图,还要插入<V2,V1>Graph->G[E->V2][E->V1]=E->Weight;
}int main()
{int i,j;MGraph Graph;Edge E[3];Graph=CreateGraph(3);for(i=0;i<3;i++){for(j=0;j<3;j++){printf("G[%d][%d]=%d  ",i,j,Graph->G[i][j]);}}printf("\n");for(i=0;i<3;i++){E[i]=(Edge)malloc(sizeof(struct ENode));}E[0]->V1=0;E[0]->V2=1;E[0]->Weight=2;E[1]->V1=1;E[1]->V2=2;E[1]->Weight=3;E[2]->V1=0;E[2]->V2=2;E[2]->Weight=6;for(i=0;i<3;i++){InsertEdge(Graph,E[i]);}for(i=0;i<3;i++){ for(j=0;j<3;j++){printf("G[%d][%d]=%d  ",i,j,Graph->G[i][j]);}}printf("\n");return 0;
}

数据结构——图的C语言实现相关推荐

  1. 【数据结构(C语言)】数据结构-图

    图 文章目录 图 一.基本概念 1.图的定义 2.约定符号 3.分类 4.子图 5.路 6.其他术语 7.ADT 二.存储结构 1.邻接矩阵(数组) 2.邻接表 三.基本算法 1.遍历 2.求无向图的 ...

  2. 20.0、C语言数据结构——图的存储结构

    20.0.C语言数据结构--图的存储结构 图的存储结构相比较线性表与树来说就复杂很多了: 1. 我们回顾下,对于线性表来说,是一对一的关系,所以用数组或者链表均可简单存放:树结构是一对多的关系,所以我 ...

  3. 四色着色问题 c语言编程,数据结构-图着色问题

    7-38 图着色问题 (25 分) 图着色问题是一个著名的NP完全问题.给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色? 但本题并不是要 ...

  4. 数据结构--图(Graph)详解(四)

    数据结构–图(Graph)详解(四) 文章目录 数据结构--图(Graph)详解(四) 一.图中几个NB的算法 1.普里姆算法(Prim算法)求最小生成树 2.克鲁斯卡尔算法(Kruskal算法)求最 ...

  5. 数据结构--图(Graph)详解(二)

    数据结构–图(Graph)详解(二) 文章目录 数据结构--图(Graph)详解(二) 一.图的存储结构 1.图的顺序存储法 2.图的邻接表存储法 3.图的十字链表存储法 4.图的邻接多重表存储法 二 ...

  6. c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)

    原标题:10 大经典排序算法(动图演示+ C 语言代码) 来源:C语言与CPP编程 以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. ...

  7. 数据结构 笔记--向量 C++ 语言版 邓俊辉老师

    邓俊辉老师的书. 1 有数组为什么还需要向量? 几乎所有程序设计语言中都会有数组,程序设计语言的开发者将数组作为一种内置的数据类型. 数组在刚开始初始化的时候就已经固定了长度,也可以依照下标查找,但还 ...

  8. 数据结构-二叉树入门Go语言实现

    数据结构-二叉树入门Go语言实现 之前我们一直在谈的是一对一的线性结构,可现实中,还有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构--"树",考虑它的各种特性,来 ...

  9. 《数据结构与算法 Python语言实现》书评与学习心得

    做为Python小白,本人几个月前读完了Mark Lutz的1400页巨著<Learning Python>(太TM啰嗦了,读过的请举手),本打算继续学习下一步<Programmin ...

最新文章

  1. centos memcached php,centos系统为php安装memcached扩展步骤
  2. Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
  3. 关于资产发现-嗅探法
  4. 在linux中安装rpm包
  5. linux基础,文件目录管理,cd、rm、mkdir
  6. 【Qt】 XML流读写XML
  7. Unity中Oculus分屏相机和普通相机一键切换
  8. 七周七语言:Scala Day 3
  9. 周期均方根和有效值的区别_黑猪肉和白猪肉有啥区别?
  10. web server的性能统计
  11. beast php,windows php-beast 安装
  12. 简记docker用法
  13. python实现观察者模式_举例讲解Python设计模式编程中的访问者与观察者模式
  14. Atitit 命令指令的分类与权限 IMAP协议为例子 目录 1. 指令的作用的权限吧。 全局命令 未认证状态命令 未认证状态命令 选中状态指令 2 1.1. 1.在任何状态下都有效的指令(全局命
  15. 58同城溢价私有化,互联网“前浪”躲不过“七年之痒”?
  16. 六自由度机械臂参数化设计
  17. 香农编码、哈夫曼编码、费诺编码的特点、优缺点及应用
  18. 勘测定界界址点坐标交换格式的读写
  19. C++按键模拟/刷屏器
  20. 无线手柄在ROS上的使用

热门文章

  1. LeetCode 1156. 单字符重复子串的最大长度
  2. LeetCode 470. 用 Rand7() 实现 Rand10()(随机概率)
  3. LeetCode 1128. 等价多米诺骨牌对的数量(哈希)
  4. LeetCode 3. 无重复字符的最长子串(滑动窗口+哈希)
  5. Oracle数据库物理存储结构管理遇到的问题与解决
  6. 无连接网络通信程序UDP
  7. 12种NumpyPandas高效技巧
  8. 怎样将Embedding融入传统机器学习框架?
  9. Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】
  10. Redis系列教程(八):分布式锁的由来、及Redis分布式锁的实现详解