数据结构|绪论
🔥Go for it!🔥
📝个人主页:按键难防
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
📖系列专栏:数据结构与算法
🔥 如果感觉博主的文章还不错的话,还请 点赞👍🏻收藏⭐️ + 留言📝支持 一下博主哦
前言:数据结构在学什么?
如何用程序代码把现实世界的问题信息化?
如何用计算机高效的处理这些信息从而创造价值。
一.基本概念
①数据
数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别 和处理的符号的集合。
②数据元素、数据项
数据元素是数据的基本单位,一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位
③数据对象、数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
④数据类型、抽象数据类型
数据类型 是一个值的集合和定义在集合上的一组操作的总称
原子类型 :值不可再分
结构类型:值可以再分
抽象数据类型 : 抽象数据组织及与之相关的操作
二.数据结构的三要素
①数据的逻辑结构
数据元素的逻辑关系是什么?
集合:
线性结构:
树形结构:
图结构:
②数据的物理结构(存储结构)
如何用计算机表示数据元素的逻辑关系?
顺序存储:
把逻辑上相邻的元素存储在物理位置 上也相邻的存储单元中,元素之间的关系由存储 单元的邻接关系来体现
优点: 随机存取,元素占用最少存储空间
缺点: 只能使用相邻的一整块存储单元,产生较多的外部碎片
链式存储:
逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
优点: 不会出现碎片现象
缺点: 存储指针占用额外的存储空间; 只能顺序存取
索引存储:
建立附加的索引表。索引表中的每项称为索引项,索引项 的一般形式是(关键字,地址)
优点: 检索速度快
缺点: 占用较多存储空间; 增加和删除数据要修改索引表,花费较多时间
散列存储:
根据元素的关键字直接计算出该元素 的存储地址,又称哈希(Hash)存储
优点: 检索,增加和删除结点都很快
缺点: 若散列函数不好,出现元素存储单元冲突,会增加时间和空间的开销
③.数据的运算
运算的定义是针对逻辑结构的, 指出运算的功能
运算的实现是针对存储结构的,指出运算的具体操作步骤。
三.总结
在探讨一种数据结构时:
①定义逻辑结构(数据元素之间的关系)
②定义数据的运算(针对现实需求,应该对这种逻辑结构进行什么样的运算)
③确定某种存储结构,实现数据结构,并实现一些对数据结构的基本运算
相关文章:
数据结构|绪论
🔥Go for it!🔥 📝个人主页:按键难防 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 📖系列专栏:数据结构与算法 ὒ…...
内网渗透(十二)之内网信息收集-内网端口扫描和发现
系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…...
RabbitMq相关面试题
文章目录消息队列有没有接触过? 简单介绍一下?消息中间件模式分类 ?使用MQ有什么好处?MQ如何选型 ?你们项目中用到过 MQ 吗?谈谈你对 MQ 的理解?MQ消费者消费消息的顺序一致性问题?R…...
树莓派开机自启动Python脚本或者应用程序
树莓派开机自启动Python脚本或者应用程序前言一、对于Python脚本的自启动方法1、打开etc/rc.local文件2、编辑输入需要启动的指令3、重启树莓派验证二、对于需要读写配置文件的应用程序的自启前言 在树莓派上写了一些Python脚本,还有一个java 的jar包想要在树莓派上…...
全国青少年编程等级考试scratch四级真题2022年9月(含题库答题软件账号)
青少年编程等级考试scratch真题答题考试系统请点击电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手1、运行下列程序,说法正确的是?( )A.列表…...
NodeJS与npm版本不一致时降级npm的方法
首先查看 Node.js 与 npm 版本对应关系:Node.js与npm版本查看。 安装 cnpm: npm install -g cnpm 查看一下 npm 和 cnpm 的镜像: npm config get registry cnpm config get registry 2 如果不是 https://registry.npm.taobao.org/ 的话就修…...
《C++ Primer Plus》第16章:string类和标准模板库(8)
关联容器 关联容器(associative container)是对容器概念的另一个改进。关联容器将值与键关联在一起,并使用键来查找值。例如,值可以表示雇员信息(如姓名、地址、办公室号码、家庭电话和工作电话、健康计划等ÿ…...
Linux安装达梦8数据库
Linux安装达梦8数据库 服务器系统:centos7 数据库版本:达梦8 先获取安装包:https://eco.dameng.com/download/?_blank 选择相应版本下载,下载完解压之后会得到一个iso文件,把他上传到服务器上,建议上传到/opt目录下…...
[数据库]初识数据库
●🧑个人主页:你帅你先说. ●📃欢迎点赞👍关注💡收藏💖 ●📖既选择了远方,便只顾风雨兼程。 ●🤟欢迎大家有问题随时私信我! ●🧐版权:本文由[你帅…...
Redis的缓存雪崩、击穿、穿透和解决方案
2.5 缓存穿透问题的解决思路 缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。 常见的解决方案有两种: 缓存空对象 优点:实现简单,维护…...
52000000
选择题(共52题,合计52.0分) 1. 敏捷团队在项目执行过程中会用到一种叫做“看板”的可视化工具,它可显示WIP, 帮助识别瓶颈和过度承诺, 从而使团队能够优化工作流。请从下列选项中选择WIP的最佳解释?() A 等待初步加工的材料的库存 B 目前正…...
内网资源探测
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :内网安全 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是…...
Java后端内部面试题(前一部分)
面试题 基础篇 1、Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 2、面向对象和面向过程的区别 面向过程:是分析解决问题的步骤,然后用函数把…...
关于如何抄引擎源码
前两天,后台有网友发私信给我,问我如何抄引擎源码。我一愣,感觉像吃饭喝水一样自然。 抄源码的好处就不说了,抄之前不懂的内容,抄完后就懂了,至少懂一部分了。当然也可以只读不抄,不过ÿ…...
差分模拟信号转单端输出电路设计
需求分析: 1.差分输入0~16V -Vpp电压量; 2.输入频率0~1.2KHz; 3.单端对应输出0~3V的模拟量; 4.输出频率对应0~1.2KHz; 5.供电范围3~5V。 针对以上需求,设计如下图所示电路。 1.电路功能: …...
Java中的clone方法
注解定义: 注解是一种注释机制,它可以注释包、类、方法、变量、参数,在编译器生成类文件时,标注可以被嵌入到字节码中。注解的分类:内置注解Override :重写方法,引用时没有该方法时会编译错误public class …...
数据结构—二叉树、完全二叉树的性质
# 1 若一棵度为4的树中度为1、2、3、4的结点个数分别为4、3、2、2,则该树的总结点个数是多少? 正确答案: 答案:结点总数nn0n1n2n3n4,又由于除根结点外,每个结点都对应一个分支,所以总的分支数等…...
JDBC编程复习
文章目录JDBC1.概念2.原理3. 如何使用JDBC编程1. 下载mysql的jdbc驱动2. 项目中引入驱动4. JDBC使用1. 和数据库建立连接2.获取连接3. Statement对象4. 释放资源JDBC 1.概念 JDBC,即Java Database Connectivity,java数据库连接。是Java提供的API用来执行SQL语句&a…...
c++基础入门二
一、数组的引用int main() {int a 10, b 20;int ar[10] { 1,2,3,4,6,7 };int& x ar[0];int& p[5] ar;//errorint(&p)[10] ar;//引用整个数组的大小sizeof(ar)int(*p)[10] &ar;//typesize表示整个数组//只有在这三种情况下代表整个数组,其他情…...
企业数字化转型的产品设计思路
数字化转型的核心是全面重塑企业的管理模式和经营模式,是迈向数字经济时代的方式。一、到底什么是数字化转型?数字化转型并不神秘。数字化转型是一种经营方式、一种经营理念,是将企业相关的人、物料、设备、资金等要素进行系统运转࿰…...
Linux日志分析常用命令
一:常用命令1、tail参数: tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ] 参数说明: -f 该参数用于监视File文件增长。 -c Number 从 Number 字节位置读取指定文件 -n Number 从 Number 行位置读取指…...
Allegro如何使用Snake命令走蛇形线操作指导
Allegro如何使用Snake命令走蛇形线操作指导 在做PCB设计的时候,遇到不规则BGA的时候,蛇形走线是惯用的走线方式,类似下图 Allegro支持蛇形走线,具体操作如下 首先把过孔打好,尽量上下左右间距一致,不容易出现偏差,如下图在Command命令栏下方输入snake,然后回车...
在 Eclipse 中创建 Maven 项目
1.在 Eclipse 中配置 MavenEclipse 中默认自带 Maven 插件,但是自带的 Maven 插件不能修改本地仓库,所以通常我们不使用自带的 Maven ,而是使用自己安装的,在 Eclipse 中配置 Maven 的步骤如下: 1) 点击 Eclipse 中的 …...
flex 布局相关属性的使用
简单概述 为元素添加 display:flex; 的属性后,当前元素被视为弹性布局的盒子容器(box),其子元素被视为弹性布局项目(item)。item 会在 box 内灵活布局,解决了对齐、分布、尺寸等响应式问题。 演示 demo <template><div class&quo…...
【C++】类和对象(第一篇)
文章目录1. 面向过程和面向对象初步认识2.类的引入3.类的定义3.1 类的两种定义方式3.2 成员变量命名规则建议4. 类的访问限定符及封装4.1 访问限定符4.2 封装5. 类的作用域6. 类的实例化7. 类对象模型7.1 类对象大小的计算7.2 类对象的存储方式猜测7.3 结构体内存对齐规则复习8…...
springboot 接入websocket实现定时推送消息到客户端
目录说明代码实现说明 如标题,举例需求场景: 前端与后端websocket连接上后,多用户登录,后端根据不同用户定时发消息给前端用于展示 代码实现 1、 <dependency><groupId>org.springframework.boot</groupId>…...
虚拟机磁盘重新分区增加Docker磁盘空间
目录一、简介二、重新分区 挂载目录2.1 增加虚拟机硬盘空间2.2 重新分区2.3 格式化新分区2.4 挂载docker目录三、重新拉取一、简介 今天在使用docker pull 拉取镜像时,报了no such file or directory的信息,原来是Docker的磁盘空间满了 #查看Docker Roo…...
Java开发学习(四十八)----MyBatisPlus删除语句之逻辑删除
1、逻辑删除 接下来要讲解是删除中比较重要的一个操作,逻辑删除,先来分析下问题: 这是一个员工和其所签的合同表,关系是一个员工可以签多个合同,是一个一(员工)对多(合同)的表 员工ID为1的张业绩,总共签了三个合同&a…...
RabbitMq
一、四大核心概念生产者:产生数据发送消息的程序是生产者交换机:交换机是RabbitMQ非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这…...
Qt学习笔记
文章目录一、C指针函数驼峰命名法、下划线命名法编程报错二、C三、Qt语法Qt历史、Qt应用Qt特色快捷键Qt类的族谱QWidgetQPushButtonQDebug对象树Qt窗口坐标信号和槽Qt自带的信号的槽自定义的信号和槽Qt4版本 vs Qt5版本 的connect写法函数指针解决重载问题拓展类型转换QString …...
网站代码在哪里写/杭州网站制作排名
问题描述: 原因: 在apptool 2.0以后命令发生了变化,不能再使用 apktool d <apk_path> <outfile_path> 解决方法:解决方法: 使用命令行apktool d -f <apk_path> -o <outfile_path> 终极解决方法: 输入 apktool 指令,能看到你所安装版本支持的全部指令 转…...
集宁做网站/佛山百度推广公司
为什么80%的码农都做不了架构师?>>> 引言 旧版的 Visual Studio 没有集成 git 工具,并且自己也习惯用 git-bash 命令行来操作, 那么如何在旧版的 Visual Studio 快速打开 git-bash 终端呢? 使用外部工具 Tips: 请确保你已经安装了git,并添加到 Windows…...
订做网站策划/论坛外链代发
CRM的出现,改变了以往客户资料分散、客户管理复杂繁琐的状况,还让企业对客户数据、产品信息、员工数据实现了统一。自20世纪90年代以来,CRM的经营理念和运作体系迅速被企业界所接受并在大企业得到广泛应用。但是,占企业总数90%以上…...
南京汽车集团网站建设/杭州百度快照优化排名推广
OpenCV提供createTrackbar()函式,可以在視窗上產生滑桿,讓使用者自己調整輸入,接著用這輸入值執行預計的操作,另外有getTrackbarPos()和setTrackbarPos()函式,讓我們對滑桿進行進一步的操作。 OpenCV 產生滑桿 int c…...
购物网站开发 webstorm/网页设计与网站开发
之前我们讲解了Git在本地版本库中的基本操作,这些操作和Linux系统中的操作基本相同。之后,在上一篇中,我们记述了如何获得SSH密钥,以及如何与Github连接的问题。在这些准备工作做好了之后,我们尝试使用Github。 本文使…...
东莞教育建站/php搭建一个简单的网站
将目光转移到RenderingThreadMain()函数,这是个任务系统,各种渲染任务在此执行。 1,通过ENQUEUE_RENDER_COMMAND向队列添加渲染任务 可见,有很多种渲染任务 二,查看其定义, 1&am…...