数据结构学习之---图的代码实现

本文介绍了图的基本概念,包括无向图、有向图、连通图、强连通图等,并探讨了最短路径的问题。接着,文章通过C++展示了如何使用二维数组创建无向图并实现深度优先搜索(DFS)和广度优先搜索(BFS)遍历。
摘要由CSDN通过智能技术生成

图的基本概念

:是由顶点的集合及顶点之间的关系集合(边)组成的一种数据结构。
Graph=(V,E);(V表示顶点,E表示边)

两个顶点之间没有方向,称这条边为无向边。组成的图为无向图。
如果任意两个顶点之间都存在边,则称该图为无向完全图。具有n个顶点的无向完全图有n(n-1)/2.
顶点之间有方向,称为有向边,组成的图为有向图
入度:箭头所指的顶点
出度出箭头的顶点
度数和边数的关系:度数/2=边数。 出度的和=入度的和=边数
与边有关的数
带权的图称为网。
序列中顶点不重复的路径称为简单路径
第一个顶点到最后一个顶点相同的路径称为环。
连通图对于任意两个顶点有路径,则称为连通图。
连通分量:无向图中的极大连通子图称为连通分量。
强连通图:有向图的连通图。
强联通分量:有向图中的极大强联通子图称做有向图的强联通子图。
**最短路径:**对于网图和非网图而言,最短路径的含义是不同的。
**网图的最短路径:**网图是带权的图,最短路径就是指两顶点之间经过的边上权值之和最少的路径。
非网图的最短路径:就是指两顶点之间经过的边数最少的路径。

采用二维数组的方式创建一个无向图,进行DFS,BFS遍历

C++实现:

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
//定义顶点类型
typedef char VertexType;
//定义权值类型
typedef int EdgeType;
//定义最大顶点数
#define MAXSIZE 100
//定义不确定的值
#define INIFINITY 65535
//创建图的类型
typedef struct Graph
{
   
        //顶点表
        VertexType vexs[MAXSIZE];
        //临接矩阵表
        EdgeType arc[MAXSIZE][MAXSIZE];
        //定义顶点数和边数
        int numvertex, numdege;
}MGraph;
void CreateGraph(MGraph* G)
{
   
        int i,j,k,w;
        cout << "请输入顶点个数和边数:" << endl;
        cin >> G->numvertex >> G->numdege;
        cout << "输入顶点" << endl;
        //初始化顶点表<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值