数据结构--Chapter6(图)

【数据结构】图的存储结构—邻接表 在图论和计算机科学中,邻接表【Adjacency List】是用来表示有限图的无序表的集合。每个列表描述图中一个顶点的邻域集。今天来和叶子一起学习邻接表吧! 阅读详情

6 图

6.1 图概述

6.1.1  图的基本概念

    图是由顶点(Vertex)集V和边(Edge)集E组成,记为G=(V,E)。V是有穷非空集合,称为顶点集,v∈V称为顶点。E是有穷集合,称为边集,e∈E称为边。e=(u,v)或e=<u,v>;u,v∈V,其中,(u,v)表示顶点u与顶点v的一条无向边,简称为边,即(u,v)没有方向,这时(u,v)(v,u)是等同的;而<u,v>表示从顶点u到顶点v的一条有向边,简称为弧,u为始点或弧尾,v为终点或弧头。需要说明的是,E可以是空集,此时图G只有顶点没有边,称为零图。

1. 无向图

    全部由无向边构成的图称为无向图(Undirected Graph)

2. 有向图

    全部由有向边构成的图称为有向图(Directed Graph)。

3.  权和网

    在 一个图中,每条边可以标上具有某种含义的数值,此数值成为该边上的权(Weight),通常一个权是一个非负数。权可以表示从一个顶点到另一个顶点的距离,时间或代价等含义。边上标识权的图成为网。

4. 完全图

    在具有n个顶点的无向图G中,当边数达到最大值n(n-1)/2时,称图G为无向完全图(Undirected Complete Graph)。

    在具有n个顶点的有向图G中,当边数达到最大值n(n-1)时,称图G为有向完全图(Directed Complete Graph)。

5. 稠密图和稀疏图

    在具有n个顶点、e条边的图G中,若含有较少的边(例如e<nlog2(n)),则称图G为稀疏图(Sparse Graph),反之则称为稠密图(Dense Graph)。

6. 子图

    设有两个图G=(V,E)和G‘=(V’,E‘),若V’是V的子集,并且E'shi E的子集,则称G’为G的子图(Subgraph),记为G‘∈G。若G’为G的子图,并且V‘=V,则称G’为G的生成子图(Spanning Subgraph)。

7. 邻接点

    在一个无向图中,若存在一条边(u,v),则称顶点u与v互为邻接点。边(u,v)是顶点u和v关联的边,顶点  u和v是边(u,v)关联的顶点。

    在一个有向图中,若存在一条弧<u,v>,则称顶点u邻接到v,顶点v邻接自u。弧(u,v)和顶点u、v关联。

8. 顶点的弧

    顶点的度(Degree)是图中与该顶点相关联的数目。顶点v的度记为D(v)。在有向图中,顶点v的度有入度和出度之分,以v为终点的弧的数目称为入度(In Degree);以v为起点的弧的数目称为出度(Out Degree),记为OD(v),顶点的度等于它的入度和出度之和,即D(v)=ID(v)+OD(v)。

    若一个图有n个顶点和e条边,则改图所有顶点的度之和与边数e满足如下关系:

                                                          e=0.5*[D(V0)+D(V1)+D(V2)+...+D(Vn-1)]

9.  路径与回路

    在一个图中,路径(Path)是从顶点u到顶点v所经过的顶点序列,路径长度是指该路径上边的数目。第一个顶点和最后一个顶点相同的路径称为回路或环。序列中顶点不重复出现的路径称为初等路径。除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路称为初等回路。

10.  连通图和连通分量

    在无向图中,若从顶点u到顶点v有路径,则称u和v是连通的。若图中的任意两个顶点均是连通的,则称该图是连通图,否则称为非连通图。无向图中的极大连通子图称为连通分量。

11. 强连通图和强连通分量

    在有向图中,若任意两个顶点均连通,则称该图是强连通图。有向图中的极大强连通子图称为强连通分量,强连通图只有一个强连通分量,即其本身;非强连通图有多个强连通分量。

12. 生成树和生成森林

    生成树是一种特殊的生成子图,它包含图中的全部顶点,但只有构成一棵树的n-1条边。

    对于非连通图,每个连通分量可行成一棵生成树,这些生成树组成了该非连通图的生成森林。

6.1.2 图的抽象数据类型

    图由顶点集和边集组成,因此对图的操作也集中在对顶点和边的操作上,主要有以下的一些操作。1)createGraph():创建一个图

2)getVexNum():返回图中的定点数

3)getArcNum():返回图中的边数

4)getVex(v):给定顶点的位置v,返回其对应的顶点值,其中,0<=v<vexNum(vexNum为顶点数)。

5)locateVex(vex):给定顶点的值vex,返回其在图中的位置,如果图中不包含此项点,则返回-1。

6)firstAdjVex(v):返回v的第一个邻接点,若v没有邻接点,则返回-1,其中,0<=v<vexNum(vexNum为顶点数)。

7)nextAdjVex(v,w):返回v相对于w的下一个邻接点,若w是v的最后一个邻接点,则返回-1,其中,0<=v,w<vexNum。

6.2  图的存储结构

    图的类型主要有4中:无向图、有向图、无向网和有向网。可以用枚举表示如下:

public enum GraphKind {
	UDG, // 无向图(UnDirected Graph)
	DG, // 有向图(Directed Graph)
	UDN, // 无向网(UnDirected Network)
	DN;// 有向网(Directed Network)
}


    图的存储结构除了存储图中各个顶点的信息外,还要存储与顶点相关联的边的信息,图的常见存储结构有邻接矩阵、邻接表、临界多重表、十字链表等,每种存储结构都能表示上面所讲的4种类型的图,这儿主要介绍邻接矩阵和邻接表。

6.2.1 邻接矩阵

    图的邻接矩阵(Adjacency Matrix)是用来表示顶点之间相邻关系的矩阵。

    图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。

    设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:


【例】下图中无向图G 5 和有向图G 6 的邻接矩阵分别为A l 和A 2 。


    无向图的邻接矩阵是对称阵,因此一般可以采用压缩存储;有向图的邻接矩阵一般不对称。用邻接矩阵存储图,所需要的存储空间只与顶点数有关。

    对于网G,则邻接矩阵可定义为:


其中:W ij 表示边上的权值;

∞表示一个计算机允许的、大于所有边上权值的数。

【例】下面带权图的两种邻接矩阵分别为A 3 和A 4 。


    用邻接矩阵表示图,很容易判断任意两个顶点之间是否有边,同样很容易求出各个顶点的度。对于无向图,邻接矩阵的第i行或第i列的非零元素的个数正好是第i个顶点Vi的度;对于有向图,邻接矩阵的第i行的非零元素的个数正好是第i个顶点Vi的出度,第i列的非零元素的个数正好是第i个顶点Vi的入度。

2. 图的邻接矩阵类的描述

    对于一个具有n个顶点的图G,可以将图G的邻接矩阵存储在一个二维数组中,图的邻接矩阵类MGraph的描述如下:

package ljjz;

import chapter6.GraphKind;

public class MGraph {
	public final static int INFINITY = Integer.MAX_VALUE;
	private GraphKind kind;// 图的种类标志
	private int vexNum, arcNum;// 图的当前顶点数和边数
	private Object[] vexs;// 顶点
	private int[][] arcs;// 邻接矩阵

	public MGraph() {
		this(null, 0, 0, null, null);
	}

	public MGraph(GraphKind kind, int vexNum, int arcNum, Object[] vexs,
			int[][] arcs) {
		this.kind = kind;
		this.vexNum = vexNum;
		this.arcNum = arcNum;
		this.vexs = vexs;
		this.arcs = arcs;
	}

	// 创建图
	public void createGraph() {

	}

	// 创建无向图
	private void createUDG() {
		
	}

	// 创建有向图
	private void createDG() {

	}

	// 创建无向网
	private void createUDN() {

	}

	// 创建有向网
	private void createDN() {

	}

	// 返回顶点数
	public int getVexNum() {
		return vexNum;
	}

	// 返回边数
	public int getArcNum() {
		return arcNum;
	}

	// 给定顶点的值vex,返回其在图中的位置,如果图中不包含此顶点,则返回-1
	public int locateVex(Object vex) {
		return 0;
	}

	// 返回v表示结点的值,0<=v<vexNum
	public Object getVex(int v) throws Exception {
		if (v < 0 || v >= vexNum) {
			throw new Exception("第" + v + "个顶点不存在!");
		}
		return vexs[v];
	}

	// 返回v的第一个邻接点,若v没有邻接点则返回-1,0<=v<vexNum
	public int firstAdjVex(int v) throws Exception {
		return 0;
	}

	// 返回v相对于w的下一个邻接点,若w是v的最后一个邻接点,则返回-1,其中,0<=v,w<vexNum
	public int nextAdjVex(int v, int w) {
		return 0;
	}

	public GraphKind getKind() {
		return kind;
	}

	public int[][] getArcs() {
		return arcs;
	}

	public Object[] getVexs() {
		return vexs;
	}

}

3. 图的邻接矩阵类基本操作的实现

1)图的创建

	public void createGraph() {
		Scanner sc = new Scanner(System.in);
		GraphKind kind = GraphKind.valueOf(sc.next());
		switch (kind) {
		case UDG:
			createUDG();// 构造无向图
			return;
		case DG:
			createDG();// 构造有向图
			return;
		case UDN:
			createUDN();// 构造无向网
			return;
		case DN:
			createDN();// 构造有向网
			return;
		}
	}


	// 创建无向网
	private void createUDN() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请分别输入图的顶点数、图的边数");
		vexNum = sc.nextInt();
		arcNum = sc.nextInt();
		vexs = new Object[vexNum];
		System.out.println("请分别输入图的各个顶点");
		for (int v = 0; v < vexNum; v++) {
			vexs[v] = sc.next();
		}
		arcs = new int[vexNum][vexNum];
		for (int v = 0; v < vexNum; v++) {
			for (int u = 0; u < vexNum; u++) {
				arcs[v][u] = INFINITY;
			}
		}
		System.out.println("请输入各个变的两个顶点及其权值");
		for (int k = 0; k < arcNum; k++) {
			int v = locateVex(sc.next());
			int u = locateVex(sc.next());
			arcs[v][u] = arcs[u][v] = sc.nextInt();
		}

	}

	// 创建有向网
	private void createDN() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请分别输入图的顶点数、图的边数");
		vexNum = sc.nextInt();
		arcNum = sc.nextInt();
		vexs = new Object[vexNum];
		System.out.println("请分别输入图的各个顶点");
		for (int v = 0; v < vexNum; v++) {
			vexs[v] = sc.next();
		}
		arcs = new int[vexNum][vexNum];
		for (int v = 0; v < vexNum; v++) {
			for (int u = 0; u < vexNum; u++) {
				arcs[v][u] = INFINITY;
			}
		}
		System.out.println("请输入各个变的两个顶点及其权值");
		for (int k = 0; k < arcNum; k++) {
			int v = locateVex(sc.next());
			int u = locateVex(sc.next());
			arcs[v][u] = sc.nextInt();
		}
	}


2)顶点定位

     顶点定位的结拜呢要求:根据顶点信息vex,取得其在顶点数组中的位置,若图中无此顶点,则返回-1.

	public int locateVex(Object vex) {
		for(int v = 0;v<vexNum;v++){
			if(vexs[v].equals(vex)){
				return v;
			}
		}
		return -1;
	}


3)查找第一个邻接点

    查找第一个邻接点的基本要求是:已知图中的一个顶点v,返回v的第一个邻接点,若v没有邻接点,则返回-1,其中,0<=v<vexNum。

	public int firstAdjVex(int v) throws Exception {
		if (v < 0 || v >= vexNum) {
			throw new Exception("第" + v + "个顶点不存在!");
		}
		for (int j = 0; j < vexNum; j++) {
			if (arcs[v][j] != 0 && arcs[v][j] < INFINITY) {
				return j;
			}
		}
		return -1;
	}

4)查找下一个邻接点

    查找下一个邻接点的基本要求是:已知图中的一个顶点v以及v的一个邻接点w,返回v相对于w的下一个邻接点,若w是v最后一个邻接点,则返回-1,其中0<=v,w<vexNum。

	public int nextAdjVex(int v, int w) throws Exception {
		if (v < 0 || v >= vexNum) {
			throw new Exception("第" + v + "个顶点不存在!");
		}
		for (int j = w + 1; j < vexNum; j++) {
			if (arcs[v][j] != 0 && arcs[v][j] < INFINITY) {
				return j;
			}
		}
		return -1;
	}

    用邻接矩阵存储图,虽然能很好地确定图中的任意两个顶点之间是否右边,但是不论是求任意顶点的度,还是查找任一顶点的邻接点,都需要访问对应的一行或一列中的所有的数据元素,其时间复杂度为O(n)。而确定图中有多少条边,则必须按行对每个数据元素进行检测,花费的时间代价较大,其时间复杂度为O(n^2)。从空间上看,无论图中的顶点之间是否有边,都要在邻接矩阵中保存空间,其空闲复杂度为O(n^2),空间效率较低,这也是邻接矩阵的局限性。

6.2.2 邻接表

1. 图的邻接表存储结构

    邻接表(Adjacency List)是图的一种链式存储方法,邻接表表示类似于树的孩子链表表示。邻接表是由一个顺序存储的顶点表和n个链式存储的边表组成的。其中,顶点表由顶点结点组成;边表是由边(或弧)及结点组成的一个单链表,表示所有依附于顶点Vi的边(对于有向图就是所有以Vi为始点的弧)。

    顶点结点包括data和firstArc两个域。data表示顶点信息;firstArc表示指向边表中的第一个边(或弧)结点。顶点节点类VNode的描述如下:

    边界点包括adjVex、nextArc和value共3个域,其中,adjVex表示与顶点Vi邻接的顶点在图中的位置;nextArc指向下一个边结点;value存储与边相关的信息,例如权值等。



【软考向】Chapter 3 数据结构 本文介绍了数据结构中的线性结构、数组、矩阵、广义表、树、图等基本概念及其存储与操作方式,以及查找和排序算法。 阅读详情

相关推荐

基于Canfestival的对象字典工具objdictedit.py的运行环境配置

本文以菜狗的视角,一步一步地对对象字典的环境进行配置,旨在能给读者一个比较详细的参考,不恰之处,还请指正。

在线求职中... 3707

OJ 邻接表的相关操作

邻接表的相关操作 时间限制: 1 Sec 内存限制: 128 MB 题目描述: 输入一个图,用邻接表存储,并实现一些操作。 拷贝下面的代码,按要求完成其中的FirstAdjVex,NextAdjVex,sort和CreateUDG操作,其他地方不得改动。 //图的邻接表存储表示 #include <iostream> #include <iomanip> using namespace std; #define MVNum 100 //最大顶点数 #defi

Eli_Code 3095

LPDDR4x 深度解析(3) - SDRAM核心操作机制

本文深入解析LPDDR4x SDRAM的核心操作机制,包括基础架构、刷新操作、读写流程及低功耗设计。详细介绍了存储阵列、地址解码器等关键模块,以及自刷新与自动刷新模式的区别。通过实测数据和技术细节,揭示LPDDR4x在性能优化和功耗控制方面的创新设计,为硬件工程师提供实用参考。

weixin_29278805的博客 307

数据结构课程设计实验八

代码】数据结构课程设计实验八。

qq_52360237的博客 597

Cadence HDL原理图库避坑指南:从Excel导入引脚到解决‘V- V+’报错(附FPGA实例)

本文详细介绍了Cadence HDL原理图库的高效构建与排错方法,重点讲解如何从Excel智能导入引脚数据并优化FPGA封装设计。通过数据预处理、智能导入和深度排错三个关键阶段,帮助工程师避免常见错误如‘V- V+’报错,提升设计效率和准确性。

weixin_28739079的博客 234

超声相控阵合成孔径成像FPGA设计介绍

1.仿真预览 2.理论分析 系统的基本结构如下所示: 以上是实际中完整的结构,系统中会涉及到两块板子中的时钟,这个就是设计一个时钟采样同步的问题,即所谓的时钟同步。一般这种情况,往往使用内插的方式来解决。这是由于,在实际中,超生波接收到的信号是由本身系统发送出去反射回来得到的,因此从另外一方面将,其是同步的。但是在接收的时候通过内插的方法解决其中的延迟问题。 根据论文中的介绍,整个系统分为如下几个部分: ·模拟发送信号,这个部分由MATLAB产生测试数据并量...

FPGA/MATLAB学习教程/源码/项目合作开发 2069

数据结构--7.图

7、图 7.1图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 无向边:若顶点vi到vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶对(vi,vj)来表示。如果图中任意两个顶点之间的边都是无向边,则称该图为无向图(Undirected graphs) 有向边:若从顶点vi到vj的边有方向,则称为弧(Arc)。用有序偶<vi,vj>来表示,vi称为弧尾(Tail),vj称为

weixin_43798821的博客 701

使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型

智能家居中的智能照明控制系统旨在通过自动化手段优化家庭照明,提高能源效率和居住舒适度。这通常涉及传感器(如光敏传感器、运动传感器)、控制器(如微控制器或PLC)以及执行器(如调光器或开关)。在这个教程中,我们将使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型。

xiaoheshang_123的博客 219

数据结构期末报告 实验三

1.分别以邻接矩阵和邻接表的存储结构建立图。 2.对图进行深度优先遍历。 3.求图中边(或弧)的数目。 4.判断无向连通图中的一个顶点是否为关节点。 5.判断一个有向图是不是一棵有向树。(任意一个顶点可能是根) #include<iostream> #include<iomanip> #include<algorithm> #include<string> using namespace std; const int MaxVertex = 10

zhangnuanxin520的博客 2031

恒玄BES调试笔记-BES2500如何Dump Anc Audio数据

从YP的4M flash改HP3的2M flash只需要改: 原工程:target.mk的export FLASH_SIZE ?= 0x200000和common.mk里的KBUILD_CPPFLAGS += -DNEW_IMAGE_FLASH_OFFSET=0x100000 OTA工程:target.mk的NEW_IMAGE_FLASH_OFFSET ?= 0x100000和FLASH_SIZE ?= 0x200000 ...

leezs的博客 1671

康复训练监测系统:基于YOLOv8的患者动作规范识别

本文系统介绍了基于YOLOv8的康复训练动作规范识别系统,从理论背景、数据准备、模型训练、推理应用到UI界面,提供了完整技术链条及代码示范。希望对康复领域的智能监测应用提供参考和借鉴。

YOLO 453

考研数据结构chapter6图(待完善)

A[i][k]+A[k][j] ,if > 则替换,并将中专顶点矩阵 path[i][j] = k。n个顶点,O(n),遍历邻接表,一共2|E|条,Tn = O(n)+O(2|E|) ~O(|V|+|E|)n个顶点,O(n),找出度以及出度的出度,O(2|E|) -> Tn=O(|V|+|E|)n个顶点,O(n),找出度以及出度的出度,O(n) + O(n^2) -> ~O(n^2)n个顶点,O(n),遍历一行,Tn -> O(n^2) ~O(|V|^2)

straight_out的博客 993

AWR1843+DCA1000通过mmwave studio采集数据遇到的问题及解决方法

确保DCA1000的拨钮拨在了RADAR_5V_IN一边,这代表DCA1000通过与其相连的雷达板子供电,如果拨到了DC_JACK5V_IN一边,表示DCA1000用单独的电源供电。

qq_50974341的博客 4163

【王道数据结构】【chapter6图】【P234t5】

假设图用邻接表表示,设计一个算法,输出从顶点vi到顶点vj的所有简单路径。测试从0到3的全部路径。

芊樱烛渊的博客 536

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【王道数据结构】【chapter6图】【P234t4】

分别采用基于深度优先遍历和广度优先遍历算法判别以邻接表方式存储的有向图中是否存在由顶点v1到顶点vj的路径(i!=j),注意,算法中设计的图的基本操作必须在此存储结构上实现。

芊樱烛渊的博客 509

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【王道数据结构】【chapter6图】【P221t6~t7】【统考真题】

【代码】【王道数据结构】【chapter6图】【P221t6~t7】

芊樱烛渊的博客 519

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【王道数据结构】【chapter6图】【P258t7】

试编写 利用DFS实现有向无环图的拓扑排序的算法。

芊樱烛渊的博客 377

【王道数据结构】【chapter6图】【P234t3】

试设计一个算法,判断一个无向图G是否为一棵树,如果是一棵树,则算法返回true,否则返回false(思路看书,不同于书的是我们这里采用bfs)其中只有1和3是树,2和4不是。

芊樱烛渊的博客 424

xv6学习——Chapter 2

Xv6学习 —— chapter 2 Operating system organization

m0_55746209的博客 992

数据结构笔记chapter06_3_图的遍历

6.3.1 广度优先遍历(BFS) 1.与树的⼴度优先遍历关系(层序遍历) 通过根节点,可以找到下⼀层的结点,逐层找到结点 树的⼴度优先遍历(层序遍历): 需要辅助队列 ①若树非空,则根节点入队 ②若队列非空,队头元素出队并访问,同时将该元素的孩子依次入队 ③重复②直到队列为空 区别: (1)树:不存在“回路”,搜索相邻的结点时,不可能搜到已经访问过的结点 (2)图:搜索相邻的顶点时,有可能搜到已经访问过的顶点 2. 算法实现 要点: (1)找到与⼀个顶点相邻的所有顶点 (2

qq_41994825的博客 1150

【Code】《代码整洁之道》笔记-Chapter6-对象和数据结构

我们将变量设置为私有(private)有一个理由:不想让其他人依赖这些变量。我们还想在心血来潮时能自由修改其类型或实现。那么,为什么还是有那么多程序员不假思索就给对象添加赋值器(setter)和取值器(getter),将私有变量公之于众,如同它们是公共变量一般呢?

江湖人称菠萝包 1614

Chapter6. Data structure

据结构是计算机中存储,组织数据的方式,精心选择的数据结构可以带来最优效率算法。

apple_lover_yxy的专栏 603

数据结构笔记chapter06_1_图的基本概念

1.图的定义 图G由顶点集V和边集E组成,记为G = (V, E) 若V = {v1, v2, … , vn},则用|V|表示图G中顶点的个 数,也称图G的阶,E = {(u, v) | uÎV, vÎV},用|E|表示图G中边的条数。 注意:线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集 2.无向图、有向图 (1)若E是无向边(简称边)的有限集合时,则图G为无向图。边 是顶点的无序对,记为(v, w)或(w, v),因为(v, w) = (w, v). (2)若E是有向边

qq_41994825的博客 263

【数据结构】—— chapter 06 图的存储及基本操作 (part1)

文章目录6.2 图的存储及基本操作6.2.1 邻接矩阵法6.2.2 邻接表法6.2.3 十字链表6.2.4 邻接多重表 6.2 图的存储及基本操作 6.2.1 邻接矩阵法 数组实现的顺序存储。用一维数组存顶点信息,二维数组存储图中边的信息(此二维数组称为邻接矩阵)。 无向图、有向图对应的邻接矩阵: 网对应的邻接矩阵: 所谓的网就是带权图。 邻接矩阵法的一些要点 6.2.2 邻接表法 顺序+链式存储。对图G的每个顶点建立一个单链表。与树中的孩子表示法相同。 邻接表存储结构

S_123789的博客 421

数据结构笔记chapter06_2_图的存储+操作

邻接矩阵法、邻接表法、十字链表、邻接多重表、图的基本操作 6.2.1 邻接矩阵法

qq_41994825的博客 715

[Clean Code] Chapter 6: 数据结构 vs 对象!

chapter 6 Objects Data Structures 1-数据抽象 2-面向过程和面向对象的对立 3-Data Transfer Objects DTO 只含public变量不含function 4-Active Record对数据库表映射的类 5-总结chapter 6: Objects & Data Structures1-数据抽象比较一下代码:// 代码1 public cla

Kill the boy and let the man be born 678
上一篇: 数据结构--Chapter5(树与二叉树)
下一篇: 数据结构--Chapter7(内排序)
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值