王道考研数据结构代码总结(第六章)

news2024/11/20 0:49:00

目录

    • 基本定义
    • 拓扑排序


本文包含王道考研讲课中所涉及的数据结构中的所有代码,当PPT代码和书上代码有所区别时以咸鱼的PPT为主,个人认为PPT上的代码比王道书上的代码要便于理解,此外,本博客也许会补充一些额外的代码进来(不仅受限于王道考研),408中冷门考点频出,应该会囊括所有涉及到的代码,这也是我的DS的第二轮复习,希望与大家共勉之。

DS的后四章只有最后一章(排序)涉及大量的代码,而树,图,查找这三章,对于概念的考察比较深入,故本文对于前三章也会进行概念上的整理,代码的话也同样会全部给出。

(2023/06/27)由于博客体量问题,本博客只会总结第六章【图】的知识点与代码

相关文章:
王道考研数据结构代码总结(前四章)
王道考研数据结构代码总结(第五章)

本文持续更新


基本定义

G : G r a p h G:Graph G:Graph(图); V : V e r t e x V:Vertex V:Vertex(顶点); E : E d g e E:Edge E:Edge(边)

G G G由顶点集 V V V和边集 E E E组成,记为 G = ( V , E ) G=(V,E) G=(V,E),其中 V ( G ) V(G) V(G)表示图 G G G中顶点的集合【非空】; E ( G ) E(G) E(G)表示图 G G G中边的集合。用 ∣ V ∣ |V| V 表示图 G G G 中顶点的个数,也称图 G G G,用 ∣ E ∣ |E| E 表示图 G G G 中边的条数。

注:线性表可以是空表,树可以是空树,但图不可以是空,即 V V V 一定是非空集, E E E 则不做要求。

在这里插入图片描述

拓扑排序

逆拓扑排序:

// 逆拓扑排序的实现(DFS算法) 

void DFSTraverse(Graph G){            // 对图G进行深度优先遍历 
    for (v = 0; v < G.vexnum; ++ v)
        visited[v] = false;           // 初始化已访问标记数据 
    for (v = 0; v < G.vexnum; ++ v)   // 本代码中是从v=0开始遍历 
        if (!visted[v])
            DFS(G, v);
/* 
注意这里也是没被访问过直接DFS
这是因为第一个节点的DFS就会输出完一个连通分量
全部打印出去后,剩下的点和边也会是一个或多个连通分量,即会出现出度为0的 "线"
此时再次DFS即可 
*/
}

void DFS(Graph G, int v){
    visit(v);                 // 从顶点v出发,深度优先遍历图G 
    visited[v] = true;           // 设已访问标记 
/* 
为什么不pop?
逆拓扑排序是先输出出度为0的点
所以只要有能往出走,就继续DFS即   if (!visited[w]) DFS(G, w);
故当不能往出走的时候,那么就是找见了出度为0的点
故我们需要打印输出,然后回溯 
*/
    for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighor(G, v, w))
        if (!visited[w]){        // w为u的尚未访问的邻接顶点 
            DFS(G, w);
        }

    print(v);           // 打印顶点 
/*
DFS实现逆拓扑排序:在顶点推栈前输出
此时的栈顶元素就是出度为0的点,符合我们的逆拓扑排序打印点的条件 
逆拓扑排序打印点的条件:
1.找一个出度为0的点输出
2.删除该顶点和所有以它为终点的有向边
无法继续DFS就是找到了出度为0的点
打印顶点其实就相当于出栈,即删除这个结点和以它为重点的有向边 
*/
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】STL关联式容器之map和set

【关联式容器】之map和set 容器类型树形结构的关联式容器mapset&#xff0c;multiset&#xff0c;multimap的区别与联系 容器类型 在STL中&#xff0c;我们接触过许多容器&#xff0c;例如&#xff1a;vector&#xff0c;list&#xff0c;stack&#xff0c;queue&#xff0c;m…

Version of Delve is too old for this version of Go

背景 编译go报错提示信息&#xff0c;delve版本太老 执行下载dlv.exe go install github.com/go-delve/delve/cmd/dlvlatest 将下载的dlv文件放在ide目录下替换

基于DSP28335的三电平有源电力滤波器

完整的软硬件资料&#xff0c;其中包括两套基于DSP28335的三电平有源电力滤波器。这些资料可以直接使用。 提取的知识点和领域范围&#xff1a; 三电平有源电力滤波器DSP28335芯片 延申科普&#xff1a; 三电平有源电力滤波器是一种用于电力系统中的滤波器&#xff0c;用于减…

vue实现简单登录界面

使用Vue实现简单的用户登录界面&#xff0c;登录成功做路由跳转&#xff0c;背景图片可自定义。实现效果如下&#xff1a; html部分 <template><div class"content"><div class"login_container"><el-form v-model"loginData&q…

Locate and Label: A Two-stage Identifier for Nested Named EntityRecognition

原文链接&#xff1a;https://aclanthology.org/2021.acl-long.216.pdf ACL 2021 介绍 问题 span-based方法将实体识别当作span的分类任务来做&#xff0c;存在以下缺陷&#xff1a;1&#xff09;计算量大&#xff0c;为了尽可能覆盖到所有实体&#xff0c;就会对多个span进行…

基于YOLO V8的车牌识别

赵春江 2023年6月 1、前言 十年前就想实现车牌识别这项任务&#xff0c;虽然当时这项技术就已较成熟&#xff08;与现在的实现方法不同&#xff09;&#xff0c;但那时的我还具备这个能力。弹指一瞬间&#xff0c;没想到十年间人工智能技术已经发展到一个新的高度&#xff0c…

【每日编程Day29】有假币

目录 一、选择题 二、编程题 1、有假币 一、选择题 重点复习选择题4,8,10。 问题4&#xff1a; 类方法&#xff1a;又称为静态方法。而实例方法不能加static&#xff0c;又叫非静态方法。 类方法和实例方法的区别_类方法和实例方法区别_及可不遥的博客-CSDN博客 &#xff0…

效果!R微型变压器节省空间秘密揭晓!

通常&#xff0c;我们可能会遇到一些特殊的设备。由于其设计空间有限&#xff0c;R型变压器的体积应足够小&#xff0c;以便很好地应用。针对市场上的这个问题&#xff0c;作为R型变压器生产厂家&#xff0c;我们怎么能不注意呢&#xff1f;因此&#xff0c;我们的设计研发团队…

明确了!国家发布程序员和搬砖民工一样,都是农民工!

目录 前言 怎么解释新生代农民工&#xff1f; 2019年确定程序员属于密集型劳动者 新生代民工确实非常形象&#xff1a; 总结&#xff1a; 前言 前几天我们发现&#xff0c;人社局官网发布了一则报告&#xff0c;显示软件开发和信息技术服务业都属于新生农工&#xff0c;不…

前端获取地区的天气状况

翻阅了大量的帖子&#xff0c;在赛选了很多废的帖子之后找到了两个总体来说还不错的 一&#xff1a;配置高德地图 高德地图的查看天气的话&#xff0c;是每天免费100次 先访问高德官网&#xff1a;高德控制台&#xff0c;注册后申请应用&#xff0c;获取key值。 这个key值可…

三步轻松搞定,Word图片打印清晰度提升10倍

Word文档中插入图片是非常常见的操作&#xff0c;然而&#xff0c;在打印时有时会遇到图片清晰度不够的问题。这种情况下&#xff0c;即使图片在电脑上看起来很清晰&#xff0c;但是在打印时却变得模糊不清。这可能会影响工作效率&#xff0c;甚至影响到呈现效果。那么&#xf…

Java 面试必刷的1100 道Java大厂面试真题(含答案解析)

2023秋招即将来临&#xff0c;很多同学会问 Java 面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。 国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的制度…

yolov8训练自有跌倒数据集

参考&#xff1a; https://www.bilibili.com/video/BV1xL411B7ax https://www.dgrt.cn/a/2364195.html?actiononClick https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/ 1、数据集制作&#xff08;一般是coco格式&#xff09;&#xff1a; lableme&a…

如何用手机快速获得真人手办所需的人像模型

伴随网络生活覆盖面的增大&#xff0c;越来越多的领域需要三维模型 &#xff0c;比如最近爆火的真人手办就必须用到人像模型 。 真人手办的制作过程其实非常简单&#xff0c;在专门搭建的摄影棚内进行全身3D扫描&#xff0c;获得3D人体模型&#xff0c;然后进行修模&#xff0c…

WordCount是什么?WordCount编程实现思路

WordCount算是大数据计算领域经典的入门案例&#xff0c;相当于Hello World。 虽然WordCount业务极其简单&#xff0c;但是希望能够通过案例感受背后MapReduce的执行流程和默认的行为机制&#xff0c;这才是关键。 WordCount编程实现思路 map阶段的核心&#xff1a;把输入的数…

C#.NETWPF开发工业MES MCS系统软件源代码两套

产品介绍&#xff1a; C#.NETWPF开发工业MES MCS系统软件源代码两套 A&#xff0c;WPF MES 上位机产线执行系统。 1&#xff0c; 完整纯源代码&#xff1b; 2&#xff0c; AGV自动调度&#xff1b; 3&#xff0c; SQLSERVER数据库。带附加文件。 4&#xff0c; WPF各种技术…

慕了!17年阿里Java开发大佬把Spring Boot的精髓都总结出来了

目前ssm框架还是比较常用的&#xff0c;其中的ss指的无非就是Spring 和 SpringMVC&#xff0c;我们可以简单地认为 "Spring Boot ≥ Spring SpringMVC" &#xff0c;没错&#xff0c;用了Spring Boot中涵盖了Spring和SpringMVC等大量常用开发配置&#xff0c;而且S…

想知道识别文字的软件有哪些?分享文字识别软件有哪些

嗨~小伙伴们&#xff0c;你们是否有过手写笔记或者拍照存档时不小心照模糊、字迹潦草的经历呢&#xff1f;别担心&#xff0c;现在有很多文字识别软件可以帮助我们迅速将纸质笔记、图片等转化成电子版&#xff0c;方便管理和编辑。今天我们就一起来看看文字识别软件有哪些吧&am…

javaDoc中进行页面跳转

在写java代码时&#xff0c;我们可以写一些用于代码跳转或者网页跳转的注释&#xff0c;这样一来&#xff0c;我们在开发软件&#xff08;比如Idea&#xff09;中就可以通过ctrl鼠标直接跳转。 常用的是{link}和see&#xff0c;两种用法基本一样&#xff0c;区别见下方。 {link…

vant组件改为 uview-plus 组件的时分秒组件

项目中本来使用过了vant 的组件&#xff0c;但是uniapp 和vant并不兼容&#xff0c;除了几个普通的组件能用之外&#xff0c;想使用弹窗的话vant就完成不了了&#xff0c;还好uniapp官方支持的 uview-plus 支持vue3&#xff0c;就给项目更换了。之前使用vant封装的组件这时候也…