数据结构--邻接多重表下的无向图的生成树

将邻接表表示的图转换为孩子兄弟法表示的二叉树 /* DJ.W 2012.12.06 代码功能: 将一个邻接表图转换为孩子兄弟法表示的二叉树 */ #include #include using namespace std; //=====Queue============================================================================================= 阅读详情

这篇我们来解决下上一篇留下的两个问题:深度优先生成树和广度优先生成树如何建立?

1.深度优先生成树
首先,我们需要读懂的是邻接表下的深度优先生成树,因为这种结构下的方法比较容易推敲,理解之后进而推广到邻接多重表上。

我们先以《数据结构(C语言版)》–严蔚敏、吴伟民编著的教材上算法7.7为例,分析下深度优先生成树是如何建立的:

void DFSTree(Graph G,int v,CSTree &T)
{
    //从第v个顶点出发深度优先遍历图G,建立以T为根的生成树。
    visited[v]=true;
    bool first=true; 
    for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
    {
        if(!visited[w])
        {
            p=(CSTree)malloc(sizeof(CSNode));   //分配孩子结点 
            *p={GetVex(G,w),NULL,NULL}; 
            if(first)   //w是v的其他未被访问的邻接顶点 
            {
                T->lchild=p;    //是根的左孩子顶点 
                first=false;
            }
            else    //w是v的其他未被访问的邻接顶点 
            {
                q->nextsibling=p;   //是上一邻接顶点的右兄弟结点 
            }
            q=p;
            DFSTree(G,w,q);
        }
    }
}

我们看看邻接表下需要什么,那么我们也为邻接多重表提供什么:

1.CSNode结构体 //树的结点结构体,拥有数据域,左孩子结点指针域,右兄弟结点指针域
2.全局变量visited[]; //访问标志数组
3.局部变量first; //是否第一个被访问的标志
4.int w=FirstAdjVex(G,v); //w是顶点v的第一个邻接顶点,我在上一篇文章中已经给出了AdjVexNotVisit函数,用于查找未访问的邻接顶点,很好,可以直接使用这个函数 。
5.p=(CSTree)malloc(sizeof(CSNode));
*p={GetVex(G,w),NULL,NULL}; //分配一个新的孩子结点,并初始化它的内容。那么我们可以用C++的语言完成这件事:
CSNode *p=new CSNode; //为该邻接点创建孩子结点
p->data=w;
p->firstchild=NULL;
p->nextsibling=NULL;

很好,现在我们需要的元素都有了。接下来,只要替换邻接表中的元素就完成了:

typedef struct CSNode   //建树用结构体 
{
    int da
[总结]数据结构真是博大精深(三) 图论 阅读详情

相关推荐

王道408数据结构——第六章 图

文章目录一、图的基本概念二、图的储存邻接矩阵邻接表十字链表邻接多重表三、图的遍历广度优先搜索(BFS)深度优先搜索(DFS)图的遍历和图的连通性四、最小生成树Prim算法Kruskal算法五、最短路径Dijkstra求单源最短路径Floyd算法求解各顶点间的最短路径问题五、有向无环图(DAG图)描述表达式六、拓扑排序七、关键路径 一、图的基本概念 图G有定点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。用∣V∣|V|∣V∣表示图G中

weixin_45668903的博客 1762

考研数据结构笔记——第六章 图

一:图的存储及基本操作 1.邻接矩阵法 图的邻接矩阵存储方式是用两个数组来表示图 一个一维数组存储图中顶点信息 一个二维数组(邻接矩阵)存储图中的边或弧的信息 设图G有n个顶点,则邻接矩阵是一个n*n的方阵 1.1无向图 (1)要判断任意两顶点是否有边无边就很容易了; (2)要知道某个顶点的度,其实就是这个顶点vi在邻接矩阵中第i行或(第i列)的元素之和; (3)求顶点vi的所有邻接点就是将矩阵中第i行元素扫描一遍,arc[i][j]为1就...

刘鑫磊 1814

生存网络与mlr3proba

通过结合生存网络和mlr3proba,可以使用生存网络模型来预测个体在给定时间点发生事件的概率,并使用mlr3proba提供的工具进行模型的训练、评估和选择最佳模型。iii)基本的机器学习(ML)方法,如重新排序和调整。在本文中,我们将只讨论前五种,因为它们在文献中得到了更好的建立,并且它们具有相同的接口,这简化了调优,我们将在下面看到。我们不会为模型指定自定义架构,而是使用默认架构,如果你熟悉PyTorch,那么你可以选择创建自己的架构,如果你愿意的话,通过将其传递给模型中的custom_net参数。

weixin_46587777的博客 1363

python123题目——个税计算器

类型:简单分支。

m0_62488776的博客 5803

集成电路设计学习笔记(二)基于IC617反相器设计之原理图绘制

博主的博客网站 欢迎大家访问! ccbirds.cn ccbirds.github.io 本文主要记录在IC617中原理图的绘制和schematic的使用方法。 新建library 要画设计自己的集成电路,需要建一个自己的库,方便对自己设计文件的管理。 打开library manager,file 下NEW下Library 选择库的保存路径,一般默认即可,并在name中填入自己库的名字。...

ccbirds 7375

RV1106的ISP配置实战:MIPI与LVDS接口的硬件连接与设备树优化

本文详细解析了RV1106芯片的ISP配置实战,重点对比了MIPI CSI-2与LVDS两种主流接口的硬件连接方案与数据流差异。通过手把手的设备树代码示例,深入讲解了单路MIPI与双路LVDS摄像头的配置要点、关键属性设置及常见避坑指南,并提供了从驱动加载检查到Media Controller工具使用的系统化调试方法,帮助开发者快速打通图像采集与处理全链路。

terraform7cloud的博客 471

爬取中国空气质量在线监测分析平台

1.准备,爬取的链接地址 https://www.aqistudy.cn/html/city_detail.html 2.分析 a.当打开链接后,数据已经设置好了,说明里面大部分都是js通过ajax调用的, b.打开f12分析代码 通过捕获到的数据包,发现当前请求为ajax,携带着一个为d的参数且该请求携带的数据是加密过的,并且响应也是加密过的 c.这时候的问题就是...

Mr Right 6371

逆向分析踩坑记:当Frida在x86模拟器上‘看不见’ARM的so文件时,我们该如何手动定位与验证?

本文探讨了在x86模拟器上使用Frida进行逆向分析时,无法检测到ARM架构so文件的解决方案。通过分析内存映射、Frida的视觉盲区及手动定位技术,提供了兼容层、混合调试和原生ARM环境三种实用方案,帮助逆向工程师突破工具限制,实现精准定位与验证。

weixin_27697385的博客 221

微软推出突破性AI医疗诊断系统MAI-DxO:诊断准确率85.5%,是医生的4倍,成本更低

微软推出医疗AI系统MAI-DxO,通过多AI模型协作实现高效诊断,准确率达85.5%,是传统医生团队的4倍。该系统整合自然语言处理、计算机视觉等技术,模拟专家会诊流程,显著降低医疗成本60%。具备罕见病识别、基层医疗支持等功能,同时注重伦理安全和可解释性。微软计划开放部分架构,推动医疗AI普惠化。这一突破标志着医疗AI从单点工具向系统级智能的跨越,有望重塑更精准、高效的智能医疗未来。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 637

NPC 三电平逆变器中点电位平衡算法详解

最常用:零序电压注入(简单、计算量小)最可靠:虚拟空间矢量调制(VSVPWM)及其改进形式(全范围平衡)趋势:结合模型预测控制(MPC)或智能算法(模糊、神经网络)进一步提升动态性能和鲁棒性。NPC 三电平逆变器中点电位平衡算法的 C# 实现示例(零序电压注入法 + 闭环补偿)在 NPC(Neutral Point Clamped)三电平逆变器中,中点电位平衡最常用且易于软件实现的方案是零序电压注入法。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 325

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 数据结构--无向图的邻接多重表存储结构
下一篇: 条款8:了解各种不同意义的new和delete
Nim的辙迹
博客等级 码龄10年 17粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值