软件设计师教程(第5版)第3章 数据结构(更新中)

news2024/11/23 15:27:45

【数据结构】是指数据元素的集合及元素间的相互关系和构造方法。P99

元素之间的相互关系是数据的【逻辑结构】。P99

数据元素及元素之间关系的存储称为【存储结构】(或【物理结构】)。P99

数据结构按照【逻辑关系】的不同分为【线性结构】和【非线性结构】两大类。P99

【非线性结构】又可分为【树】结构和【图】结构。P99

3.1 线性结构

3.1.1 线性表

1.线性表的定义

2.线性表的存储结构

线性表的存储结构分为【顺序】存储和【链式】存储。P100

3.1.2 栈和队列

1.栈

1)栈的定义及基本运算
2)栈的存储结构

2.队列

1)队列的定义及基本运算
2)队列的存储结构

3.1.3 串

1.串的定义及基本运算

1)串的定义
2)串的几个基本概念
3)串的基本操作

2.串的存储结构

3.串的模式匹配

1)朴素的模式匹配算法

【朴素】的模式匹配算法也称为布鲁特—福斯算法。P110

2)改进的模式匹配算法

【改进】的模式匹配算法又称为【KMP】算法。P111

3.2 数组、矩阵和广义表

3.2.1 数组

1.数组的定义及基本运算

1)数组的定义
2)数组的两个基本运算

2.数组的顺序存储

3.2.2 矩阵

1.特殊矩阵

若矩阵中元素(或非0元素)的分布有一定的规律,则称之为【特殊】矩阵。P115

常见的特殊矩阵有【对称】矩阵、【三角】矩阵和【对角】矩阵等。P115

2.稀疏矩阵

在一个矩阵中,若非0元素的个数远远少于0元素的个数,且非0元素的分布没有规律,则称之为【稀疏】矩阵。P116

稀疏矩阵的三元组表的顺序存储结构称为【三元组顺序表】,常用的三元组表的链式存储结构是【十字】链表。P116

3.2.3 广义表

广义表的【长】度是指广义表中元素的【个数】。P117

广义表的【深】度是指广义表展开后所含的括号的【最大层数】。P117

1.广义表的基本操作

2.广义表的特点

3.广义表的存储结构

3.3 树

3.3.1 树与二叉树的定义

1.树的定义

2.树的基本概念

3.二叉树的定义

3.3.2 二叉树的性质与存储结构

1.二叉树的性质

2.二叉树的存储结构

1) 二叉树的顺序存储结构
2) 二叉树的链式存储结构

3.3.3 二叉树的遍历

按照先遍历左子树后遍历右子树的约定,根据访问根结点位置的不同,可得到二叉树的【先序】、【中序】和【后序】3种遍历方法。此外,对二叉树还可进行【层序】遍历。P122

3.3.4 线索二叉树

1.线索二叉树的定义

2.建立线索二叉树

3.访问线索二叉树

3.3.5 最优二叉树

1.最优二叉树

【最优二叉树】又称为【哈夫曼树】,它是一类带权路径长度最短的树。P126

2.哈夫曼编码

3.3.6 树和森林

1.树的存储结构

常用的树的存储有【双亲】表示法、【孩子】表示法和【孩子兄弟】表示法。P130

在这里插入图片描述
在这里插入图片描述

2.树和森林的遍历

1)树的遍历
2)森林的遍历

3. 树、森林和二叉树之间的相互转换

树、森林转换成二叉树
二叉树转换为树和森林

3.4 图

3.4.1 图的定义与存储

1.图的定义

在图中,数据【元素】用【顶点】表示,数据元素之间的【关系】用【边】表示。P134

2.图的存储结构

图的基本存储结构有【邻接矩阵】表示法和【邻接链表】表示法两种。P135

1)邻接矩阵表示法
2)邻接链表表示法

3.4.2 图的遍历

【深度】优先搜索和【广度】优先搜索是两种遍历图的基本方法。P138

1.深度优先搜索(Depth First Search,DFS)

2.广度优先搜索(Breadth First Search,BFS)

3.4.3 生成树及最小生成树

1.生成树的概念

2.最小生成树

常用的最小生成树求解算法有【普里姆】(Prim)算法和【克鲁斯卡尔】(Kruskal)算法。P141

3.4.4 拓扑排序和关键路径

1.AOV网

在有向图中,若以顶点表示活动,用有向边表示活动之间的优先关系,则称这样的有向图为以顶点表示活动的网(【AOV】网)。P143

不存在回路的有向图称为【有向无环图】,或【DAG】图。P143

2.拓扑排序及其算法

3.AOE网

4.关键路径和关键活动

3.4.5 最短路径

1.单源点最短路径

2.每对顶点间的最短路径

3.5 查找

3.5.1 查找的基本概念

1. 基本概念

2. 平均

3.5.2 静态查找表的查找方法

1.顺序查找

2.折半查找

3.分块查找

3.5.3 动态查找表

1.二叉排序树

1)二叉排序树的定义
2)二叉排序树的查找过程
3)在二叉排序树中插入结点的操作
4)在二叉排序树中删除结点的操作

2.平衡二叉树

1)平衡二叉树上的插入操作
2)平衡二叉树上的删除操作

3.B_树

3.5.4 哈希表

1.哈希表的定义

2.哈希函数的构造方法

常用的哈希函数构造方法有【直接定址】法、【数字分析】法、【平方取中】法、【折叠】法、【随机数】法和【除留余数】法等。P162

3.处理冲突的方法

哈希表常见的处理冲突的方法有:【开放定址法】、【链地址法】、【再哈希法】、【建立一个公共溢出区】。P162

3.6 排序

3.6.1 排序的基本概念

【内部】排序指待排序记录全部存放在内存中进行排序的过程。P165

【外部】排序指待排序记录的数量很大,以至于内存不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。P165

3.6.2 简单排序

1.直接插入排序

2.冒泡排序

3.简单选择排序

3.6.3 希尔排序

【希尔】排序又称为“【缩小增量】排序”,它是对【直接插入】排序方法的改进。P168

3.6.4 快速排序

3.6.5 堆排序

3.6.6 归并排序

3.6.7 基数排序

3.6.8 内部排序方法小结

在这里插入图片描述

3.6.9 外部排序

常用的外部排序方法是【归并】排序。P176

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

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

相关文章

计算机组成原理(4):指令系统/控制器

1 指令格式 【补充知识】 计算机语言的层级关系:机器语言 - 汇编语言 - 高级语言; ​ 机器语言用二进制来编写,用来反映硬件的语言。但是二进制编写太难了,就诞生了汇编语言,对其编程进行封装、简化; ​ …

C++ | Leetcode C++题解之第357题统计各位数字都不同的数字个数

题目&#xff1a; 题解&#xff1a; class Solution { public:int countNumbersWithUniqueDigits(int n) {if (n 0) {return 1;}if (n 1) {return 10;}int ans 10, cur 9;for (int i 0; i < n - 1; i) {cur * 9 - i;ans cur;}return ans;} };

8.Java基础概念-方法

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words&#xff01; 什么是方法 方法是程序…

QT 与 C++实现基于[ TCP ]的聊天室界面

TCP客户端 Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket> //客户端类 #include <QMessageBox> #include <QListWidgetItem> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } …

基于YOLO V8的PCB缺陷检测识别系统(python源码+Pyqt5界面+数据集+训练代码)

数据集准备&#xff1a;收集并标注PCB缺陷的图像。模型训练&#xff1a;使用YOLO v8框架训练一个模型来识别这些缺陷。GUI开发&#xff1a;利用PyQt5创建一个用户友好的图形界面。模型部署&#xff1a;在GUI中集成训练好的模型&#xff0c;使用户能够上传PCB图像并得到缺陷检测…

数据结构-树(二叉树)-第三天

结合leetcode学习c 学习资料来源 定义 二叉树&#xff08;binary tree&#xff09;是一种非线性数据结构&#xff0c;代表“祖先”与“后代”之间的派生关系&#xff0c;体现了“一分为二”的分治逻辑。 与链表类似&#xff0c;二叉树的基本单元是节点&#xff0c;每个节点包含…

[数据集][目标检测]停车场空位检测数据集VOC+YOLO格式7959张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;7959 标注数量(xml文件个数)&#xff1a;7959 标注数量(txt文件个数)&#xff1a;7959 标注…

p9 镜像的基本命令

docker的常用命令 帮助命令 查看docker的版本 docker version2. 查看当前安装的docker的详细的信息 docker的系统信息包括镜像和容器的数量 docker info3. 查询帮助命令 image是你想要获取哪一个命令的帮助文档,一般百度或者人工智能就行所有命令的可选项都可以用这个–hel…

DN专业3D图形制作软件win/mac软件安装下载(附下载链接)

目录 一、软件概述 1.1 Adobe DN简介 1.2 Windows/Mac系统要求 Windows系统&#xff1a; Mac系统&#xff1a; 二、安装步骤 2.1 下载与解压 2.2 安装程序 2.3 启动软件 三、使用教程 3.1 界面介绍 3.2 创建和编辑3D内容 3.3 合成与渲染 四、高级技巧与注意事项 …

.NET内网实战:通过DNS查找出网主机

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 03编码实现 在红队活动中&…

Modbus 数据帧解析

Modbus 是一种通信协议&#xff0c;广泛应用于工业自动化系统中&#xff0c;用于连接电子设备。它是一种基于主从结构的通信协议&#xff0c;其中主设备可以与多个从设备通信。数据通过一系列的帧进行传输&#xff0c;每一帧包含多个字段&#xff0c;每个字段都有特定的功能。 …

SQL进阶技巧:最近有效的缺失值填充问题【last_value实现版】

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 场景:现在有一张商品入库表,包括商品id、商品成本和入库日期3个字段,由于某些原因,导致部分商品的成本缺失(为0或者没有值都是缺失),这样不利于我们计算成本。所以现在要把缺失的商品进价补充完整,补充的…

OpenCTI:开源网络威胁情报平台

OpenCTI 是一个开源平台&#xff0c;旨在帮助组织管理其网络威胁情报 (CTI) 数据和可观察数据。 该平台由 Filigran 开发&#xff0c;使用基于 STIX2 标准的知识模式构建数据。 它采用现代 Web 应用程序架构&#xff0c;配备 GraphQL API 和用户友好的前端。 OpenCTI 与 MIS…

MySQL在Windows和Ubuntu上的安装与远程连接配置

MySQL是一个广泛使用的开源关系数据库管理系统&#xff0c;适用于各种操作系统。本文将详细介绍如何在Windows和Ubuntu系统上安装MySQL&#xff0c;并配置远程连接。 1. 在Windows上安装MySQL 1.1 下载MySQL安装包 首先&#xff0c;访问MySQL官方网站&#xff08;https://de…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑模块冗余和系统状态的多...电系统可靠性的蒙特卡洛分析》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【Java日志系列】JCL、SLF4J日志门面

目录 前言 一、日志门面概述 1. 门面模式&#xff08;外观模式&#xff09; 2. 日志门面 二、JCL 1. JCL组件结构 2. JCL案例 三、SLF4J 1. SLF4J简介 2. SLF4J桥接技术 3. 快速入门 4. SLF4J集成日志实现 4.1 集成nop 4.2 集成Logback 4.3 集成Log4j 4.4 集成…

一文彻底搞懂Transformer - 总体架构,零基础入门到精通,收藏这一篇就够了

Transformer 一、RNN编码器-解码器架构**** ********序列到序列模型&#xff08;Seq2Seq&#xff09;&#xff1a;Seq2Seq模型的目标是将一个输入序列转换成另一个输出序列&#xff0c;这在多种应用中都具有广泛的实用价值&#xff0c;例如语言建模、机器翻译、对话生成等。 …

网络及ipc内存共享

大字符串找小字符串 调试 1. 信号处理函数注册&#xff1a;•一旦使用 signal 函数注册了信号处理函数&#xff0c;该函数就会一直有效&#xff0c;直到程序结束或者显式地取消注册。2. 注册多次的影响&#xff1a;•如果多次注册同一信号的处理函数&#xff0c;最后一次注册的…

Java 入门指南:List 接口

Collection 接口提供了一系列用于操作和管理集合的方法&#xff0c;包括添加、删除、查询、遍历等。它是所有集合类的根接口&#xff0c;包括 List、Set、Queue 等。 Collection 接口常见方法 add(E element)&#xff1a;向集合中添加元素。 addAll(Collection col)&#xff1…

打架检测算法在公共安全中的创新应用

在现代社会中&#xff0c;公共场所的安全问题日益受到重视&#xff0c;特别是暴力事件的监控和预防更是各类安防系统的核心需求之一。随着视频监控设备的普及&#xff0c;如何从大量监控数据中实时、高效地识别出潜在的暴力行为&#xff0c;成为亟待解决的难题。传统的视频监控…