当前位置: 首页 > news >正文

软件设计(十一)数据结构(上)

  • 线性结构
  1. 线性表

线性表是n个元素的有限序列,通常记为(a1,a2....an),特点如下。

  1. 存在唯一的一个称作“第一个”的元素。
  2. 存在位移的一个称作“最后一个”的元素。
  3. 除了表头外,表中的每一个元素均只有唯一的直接前趋
  4. 除了表尾外,表中的每一个元素均只有唯一的直接后继

1)线性表的 顺序存储:优点随机存取表中元素,缺点每次插入需要移动大量元素。

2)线性表的 链式存储:指用节点来存储数据元素,节点的空间可以是连续的,也可以是不连续的,因此存储数据元素的同时必须存储元素之间的逻辑关系。节点空间只有在需要的时候才申请,无须事先分配。

链表作为存储结构时,不能进行数据元素随机访问,但优点是插入和删除操作时候不需要移动大量数据

常用的链表结构:

  1. 双向链表:每个节点包含两个指针,指明直接前趋和后继,可在两个方向遍历链表。
  2. 循环链表:表尾的指针指向第一个节点。
  3. 静态链表:借助数组来描述线性表的链式存储结构。

  1. 栈和队列

只能通过访问它一端来实现数据存储和检索的一种线性数据结构。它是先进后出的原则FILO

栈典型的应用包括表达式求值、括号匹配等。在计算机语言的实现以及将递归过程转变为非递归过程的处理中,栈都很重要

队列

队列是一种先进先出(FIFO)的线性表,它只允许在表的一端插入元素,表的另一端删除元素

  • 数组、矩阵和广义表
  1. 数组

n维数组是一种“同构”的数据结构,其每一个元素类型相同,结构一致。数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。

数组结构特点:数据元素数目固定、数据元素具有相同的类型、数据元素的下标关系具有上下界的约束且下标有序。

一旦定义了数组,结构中元素个数和元素之间的关系就不再发生改变,因此数组适用于采用顺序存储结构。

因为计算机内存结构是一维线性的,因此存储多维数组时必须按照某种方式进行降维处理。

  1. 矩阵

特殊矩阵:若矩阵中元素(或非0元素)的分部有一定规律,则为特殊矩阵。(如 三角矩阵、对称矩阵、对角矩阵)

稀疏矩阵:若非零的元素远远小于零元素的个数,且非零元素的分部没有规律,则为稀疏矩阵。

  1. 广义表

广义表是线性表的推广,由0个或者多个单元素或子表所组成的有限序列。

广义表长度是元素的个数,深度指广义表展开后所含括号的最大层数。

树是n(n>=0)个节点的有限集合,n=0时称为空树,在任意非空树中:

  1. 有且仅有一个称为根的节点。
  2. 其余的节点可分为m(m>=0)个互不相交的子集T1,T2...Tm,其中每个子集本身又是一棵树,并称为根节点的子树。

树由若干子树构成,子树又由子树构成。

  1. 双亲和孩子:节点的子树的跟称为该节点的孩子,该节点称为其子节点的双亲。
  2. 兄弟:具有相同双亲的节点互为兄弟。
  3. 节点的度:一个节点的子树的个数记为该节点的度。
  4. 叶子结点:也称为终端节点,指度为0的节点。

等...

  1. 二叉树

二叉树binary tree是n(n>=0)个节点的有限集合,它或者是空树(n=0),或者是由一个根节点及两棵互不相交的、分别称为左子树和右子树的二叉树所组成。

二叉树节点最大度为2,而普通树不限制节点的度数

二叉树基本运算时是遍历,他有如下性质

  1. 二叉树第i层上的节点数目最多为 2 的 (i-1)次方。(i>=1)
  2. 深度为k的二叉树至多 (2的k次方)-1 个节点。(i>=1)
  3. 在任意一颗二叉树中,若终端节点数为n0,度为2的节点数为n2,则n0 = n2+1。

等...

二叉树的遍历

二叉树分为根节点、左子树和右子树,按照左子树必须遍历在右子树之前,所以分为前序、中序、后续

也可以层序遍历,从树的根节点出发,依次访问第一层节点,从左往右依次访问第二层的节点,以此类推,自上而下,自左往右

图G是由两个集合V和E构成的二元组,记作G=(V,E),其中V是图中顶点的非空有限集合,E是图中边的有限集合。从数据结构逻辑关系看,图中任意顶点都与其他顶点有关,而图中所有顶点都有可能与某一顶点有关。在图中,数据结构中的数据元素用顶点表示,数据元素之间的关系则用边表示。

  1. 有向图:若图中每条边都是有方向的,则称G为有向图。
  2. 无向图:若图中每一条边都是无方向的。
  3. 无向完全图:若一个图像图具有n个顶点,若每一个顶点与其他n-1个顶点之间都有边,则称为无向完全图。显然含n个顶点的无向完全图共有n(n-1)/2条边。
  4. 有向完全图:有n个顶点的有向完全图中孤的数目为n(n-1),即任何两个不同顶点之间都有方向相反的两条弧存在。

等...

图的遍历分为:

  1. 深度优化遍历 DFS:从图G任意一个顶点v出发。设计搜索指针,指向旁边未访问的顶点。
  2. 广度优化遍历:BFS:从顶点v出发,访问v旁边都未访问过的顶点。

相关文章:

软件设计(十一)数据结构(上)

线性结构 线性表 线性表是n个元素的有限序列,通常记为(a1,a2....an),特点如下。 存在唯一的一个称作“第一个”的元素。存在位移的一个称作“最后一个”的元素。除了表头外,表中的每一个元素均只有唯一的直接前趋除了表尾外&…...

https协议

文章目录对称加密方案非对称加密方案对称加密方案非对称加密方案对称加密方案非对称加密方案数字证书因为HTTP是明文传输,所以会很有可能产生中间人攻击(获取并篡改传输在客户端及服务端的信息并不被人发觉),HTTPS加密应运而生。 …...

深入浅出C语言——数据在内存中的存储

文章目录一、数据类型详细介绍1. C语言中的内置类型2. 类型的基本归类:二. 整形在内存中的存储1. 原码、反码、补码2. 大小端三.浮点数存储规则一、数据类型详细介绍 1. C语言中的内置类型 C语言的内置类型有char、short、int、long、long long、float、double&…...

在 Centos 上在线安装 GitLab

作为程序员,其中一个愿望是拥有一个自己的代码存储库。在支持私有部署的代码存储库产品中,GitLab 是比较著名的了,所以今天我总结了一下在 Centos 上安装 GitLab 的过程。 依赖 基础依赖 首先,需要安装部分基础的依赖&#xff…...

模型解释性:SHAP包的使用

本篇博客介绍另一种事后可解释性方法:SHAP(SHapley Additive exPlanation)方法。 1. Shapley值理论 Shapley值是博弈论中的一个概念,通过衡量联盟中各成员对联盟总目标的贡献程度,从而根据贡献程度来进行联盟成员的利益分配,避免…...

算法训练营 day45 动态规划 0-1背包理论 分割等和子集

算法训练营 day45 动态规划 0-1背包理论 分割等和子集 0-1背包理论 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 在下面的讲解中&…...

SSM框架

1.mybatis的底层原理 本质上就是使用反射和动态代理来实现对应的映射关系 2.日志级别 3.传递参数 单个参数的传递和多个参数的传递 Emp selectOne(Param(“xingming”) String name); List selectByCondition(Param(“name”) String name,Param(“sal”) double sal); 4.#和…...

教育行业需要什么样的客服系统?

某教育公司拥有素质教育、成人教育、智慧教育等多个业务板块,日常通过电商、线上媒体、线上线下授课等方式进行业务开展和品牌宣传,取得了非常不错的成绩,受到了很多人的好评反馈。 对于这样一个教育公司,客户来源广泛&#xff0…...

花房集团任命新首席财务官:已跌破IPO发行价,活跃用户下滑

上市刚满2个月,花椒母公司花房集团(HK:03611)的高管就发生了变更。2023年2月12日,花房集团披露的公告显示,董事会宣布赵磊为该公司首席财务官(CFO),自2023年2月10日起生效。 据贝多…...

儿童绘本馆图书借阅租赁知识付费小程序源码交流

1.分类图书 2.书单推荐 4.会员卡次、期限购买 5.借阅时间选择 6.积分签到 7.优惠Q领取 前端uniapp开发 后端thinkphp开发 完全开源 <template> <view class"sp-section sp-index"> <!-- search --> <view class&qu…...

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…...

Django设计模式以及模板层介绍

MVC和MTV 传统的MVC作用&#xff1a;降低模块间的耦合度&#xff08;解耦&#xff09;Django的MTV模式 作用&#xff1a;降低模块间的耦合度&#xff08;解耦&#xff09;什么是模板 1、模板是可以根据字典数据动态变化的html网页2、模板可以根据视图中传递的字典数据动态生成相…...

Linux信号一门搞定

1.信号是什么&#xff1f; 信号其实就是一个软件中断。 例&#xff1a; 输入命令&#xff0c;在Shell下启动一个前台进程。用户按下Ctrl-C&#xff0c;键盘输入产生一个硬件中断。如果CPU当前正在执行这个进程的代码&#xff0c;则该进程的用户空间代码暂停执行&#xff0c;…...

手撸一个动态Feign,实现一个“万能”接口调用

Feign&#xff0c;在微服务框架中&#xff0c;是的服务直接的调用变得很简洁、简单&#xff0c;而不需要再编写Java Http调用其他微服务的接口。 动态feign 对于fegin调用&#xff0c;我们一般的用法&#xff1a;为每个微服务都创建对应的feignclient接口&#xff0c;然后为每…...

Linux Capabilities 入门

目录 Linux capabilities 是什么&#xff1f; capabilities 的赋予和继承 线程的 capabilities Permitted Effective Inheritable Bounding Ambient 文件的 capabilities Permitted Inheritable Effective 运行 execve() 后 capabilities 的变化 案例 Linux capab…...

驱动 day6

关于设备树的理解&#xff1a; 设备树&#xff08;Device Tree&#xff09;是一种用于特定硬件设备的解释语法树。它用来表示存储有关主板硬件和CPU架构信息的数据在内核中的传递格式&#xff0c;使内核可以更好地了解硬件并支持它们&#xff0c;而不必编写固定的代码。设备节点…...

附录2-tensorflow目标检测

源码来自作者Bubbliiiing&#xff0c;我对参考链接的代码略有修改&#xff0c;网盘地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;dvb1 目录 1 参考链接 2 环境 3 数据集准备 3.1 VOCdevkit/VOC2007 3.2 model_data/voc_classes.txt 3.3 voc_an…...

常见的EMC问题

电磁兼容设计的目的就在于满足产品功能要求、减少调试时间&#xff0c;使产品满足电磁兼容标准的要求&#xff0c;并且使产品不会对系统中的其它设备产生电磁干扰。 电磁兼容设计中常见的问题有哪些&#xff1f; 1、电磁兼容设计可以从电路设计&#xff08;包括器件选择&…...

Redis内存存储效率问题

目录 内存碎片是如何形成的&#xff1f; 如何判断是否有内存碎片&#xff1f; 如何清理内存碎片&#xff1f; INFO命令 面向 Prometheus 的 Redis-exporter 监控 实习期间&#xff0c;了解到&#xff0c;企业级开发中多个项目使用Redis&#xff0c;运行Redis实例的有可能是…...

3.28 haas506 2.0开发教程-example-蓝牙多设备扫描(仅支持M320,HD1)

haas506 2.0开发教程-example-蓝牙多设备扫描案例说明蓝牙信息克隆1.手机蓝牙改名信息克隆代码测试案例说明 开发板扫描蓝牙设备&#xff0c;获取并打印蓝牙设备mac地址。mac地址每个设备不同&#xff0c;且不能更改。本案例仅适用于M320开发板和HD1-RTU。案例使用手机与iBeac…...

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…...

git日常使用命令

实习这段时间使用了很多git指令来提交代码&#xff0c;简单记录一下日常使用的指令&#xff1a; 提交代码通常顺序&#xff1a; 1.git status 查看本地修改项 2.git add . 提交全部文件 &#xff08;这个 .是全部文件&#xff09;到暂存区 3.git commit -m ‘本次提交的说明’…...

ES6对象展开运算符浅拷贝or深拷贝

ES6中提出的对象展开运算符“…”就是用来展开元素的。有了它就不用代码循环遍历了&#xff0c;偷懒专用。 1. 合并数组 展开原有数组中的所有元素&#xff0c;可以合并成一个新的数组。 var a[1,2,3]; var b[4,5,6]; var c[...a,...b]; console.log(c) // 输出&#xff1a;…...

leaflet 上传包含shp的zip文件,在map上解析显示图形(059)

第059个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中本地上传包含shp的zip文件,利用shapefile读取shp数据,并在地图上显示图形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果加载shapefile.js方式安装引用jszip(…...

CAN总线详细介绍

1.1 CAN是什么&#xff1f; CAN 最终成为国际标准 &#xff08; ISO11898(高速应用)和 ISO11519&#xff08;低速应用&#xff09;&#xff09;&#xff0c;是国际上应用最广泛的现场总线之一。 1.2 CAN总线特点 多主方式: 可以多主方式工作&#xff0c;网络上任意一个节点…...

python如何完成对 Excel文件的解密后读取?

通常为了防止重要的Excel文件数据内容的泄露&#xff0c;需要对文件整体进行加密与解密的操作。 对于文件的加解密过程&#xff0c;python也有很多非标准库来帮助我们完成操作&#xff0c;这里主要说明如何完成对Excel文件的解密与读取操作。 这里我们使用到的是msoffcrypto-…...

微服务实战--高级篇:RabbitMQ高级

服务异步通信-高级篇 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送…...

autoCAD2022 - 设置新的原点

文章目录autoCAD2022 - 设置新的原点概述笔记UCS原点设置功能的菜单位置ENDautoCAD2022 - 设置新的原点 概述 上次整板子的dxf时, 原来的原点不合适, 想调整一下. 当时整完了, 没记录. 这次用的时候, 又找半天… 设置新原点的功能, 不在顶部菜单中, 而是在视图右上角的UCS图标…...

spring boot 配置 mybatis-plus多数据源

简介Mybatis-puls 多数据源的使用&#xff0c;采用的是官方提供的dynamic-datasource-spring-boot-starter包的 DS 注解&#xff0c;具体可以参考官网&#xff1a;https://gitee.com/baomidou/dynamic-datasource-spring-boot-starterpom.xml文件引入如下依赖主要引入dynamic-d…...

独立产品灵感周刊 DecoHack #047 - 安卓手机上最有用的APP

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Bouncer Tempor…...

开发区网站建设方案/怀化seo推广

schedulerx 日志服务 官网&#xff1a;https://help.aliyun.com/document_detail/405090.html 接入日志服务 控制台&#xff1a;创建应用&#xff0c;开通日志服务&#xff08;日志最多保留2周&#xff0c;超过2周会被清理&#xff09; 客户端&#xff1a;需为1.4.2以上版本 &l…...

wordpress插件转php/品牌推广案例

1 import smtplib2 from email.mime.text import MIMEText3 4 # 第三方 SMTP 服务5 mail_host "smtp.sina.cn" # SMTP服务器 #网易是 smtp.163.com #腾讯是 smtp.qq.com6 mail_user "perfectcrmsina.cn" # 用户名#新浪邮箱账号或者163和QQ 的…...

企业邮箱认证/安卓优化大师app下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vU921Xa-1620279864002)(//upload-images.jianshu.io/upload_images/2423320-37037f9d86a75ce0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)] 简介 Jetpack是一套库、工具…...

建设网站的网页设计/自己做网站如何赚钱

[翻译] ASP.NET MVC Framework控制器操作安全性 原文地址&#xff1a;http://gridviewguy.com/Articles/385_ASP_NET_MVC_Framework_Controller_Action_Security.aspx 翻译&#xff1a;Anders Liu 摘要&#xff1a;ASP.NET MVC Framework允许开发者使用更为灵活的方式创建Web应…...

网站建设沛宣/熊猫seo实战培训

文章转自&#xff1a;http://www.yongblog.com/archives/256.html这篇文章主要介绍 SIFT 算法。希望通过对 SIFT 算法的总结来更加深入地了解“尺度不变特征变换”&#xff0c;除此之外&#xff0c;也加深来对 SURF 算法的理解。附件&#xff1a;SIFT—Scale Invariant Feature…...

专门做二维码的网站/微信scrm系统

随着互联网的快速发展&#xff0c;越来越多的支付APP出现&#xff0c;改变着人们的生活&#xff0c;给国人带来了很大的方便。众多的支付APP中&#xff0c;支付宝和微信支付市场占有率最高&#xff1b;现在各行各业都在使用支付宝和微信支付进行交易。 现在市场支付宝和微信支付…...