数据结构的作用和意义 (数据结构的作用)
创始人
2026-05-11 18:23:25
0次

本文目录导航:

  • 数据结构的作用和意义
  • 一文带你意识30个关键的数据结构和算法
  • 数据结构有哪几种?

数据结构的作用和意义

1、普通以为,一个数据结构是由数据元素依据某种逻辑咨询组织起来的。

对数据元素间逻辑相关的形容称为数据的逻辑结构;数据必定在计算机内存储,数据的存储结构是数据结构的成功方式,是其在计算机内的表示;此外探讨一个数据结构必定同时探讨在该类数据上口头的运算才无心义。

一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据解决的效率。

2、在许多类型的程序的设计中,数据结构的选用是一个基本的设计思考起因。

许多大型系统的结构阅历标明,系统成功的艰巨水平和系统结构的品质都重大的依赖于能否选用了最优的数据结构。

许多时刻,确定了数据结构后,算法就容易失掉了。

有些时刻事情也会反上来,咱们依据特定算法来选用数据结构与之顺应。

不论哪种状况,选用适合的数据结构都是十分关键的。

3、选用了数据结构,算法也随之确定,是数据而不是算法是系统结构的关键起因。

这种洞见造成了许多种软件设计方法和程序设计言语的出现,面向对象的程序设计言语就是其中之一。

4、数据结构是计算机存储、组织数据的方式。

数据结构是指相互之间存在一种或多种特定相关的数据元素的汇合。

通常状况下,精心选用的数据结构可以带来更高的运转或许存储效率。

数据结构往往同高效的检索算法和索引技术无关。

一文带你意识30个关键的数据结构和算法

数组是最便捷也是最经常出现的数据结构。

它们的特点是可以经过索引(位置)轻松访问元素。

它们是做什么用的?

构想一下有一排剧院椅。

每把椅子都调配了一个位置(从左到右),因此每个观众都会从他将要坐的椅子上调配一个号码。

这是一个数组。

将疑问裁减到整个剧院(椅子的行和列),您将领有一个二维数组(矩阵)。

个性

链表是线性数据结构,就像数组一样。

链表和数组的关键区别在于链表的元素不存储在延续的内存位置。

它由节点组成——实体存储以后元素的值和下一个元素的地址援用。

这样,元素经过指针链接。

它们是做什么用的?

链表的一个相关运行是阅读器的上一页和下一页的成功。

双链表是存储用户搜查显示的页面的完美数据结构。

数据结构的作用

个性

堆栈是一种形象数据类型,它方式化了受限访问汇合的概念。

该限度遵照 LIFO(后进先出)规定。

因此,减少到堆栈中的最后一个元素是您从中删除的第一个元素。

堆栈可以经常使用数组或链表来成功。

它们是做什么用的?

事实生存中最经常出现的例子是在食堂中将盘子叠放在一同。

位于顶部的板首先被移除。

搁置在最底部的盘子是在堆栈中保管期间最长的盘子。

堆栈最有用的一种状况是您须要失掉给定元素的相反顺序。

只要将它们所有推入堆栈,而后弹出它们。

另一个幽默的运行是有效括号疑问。

给定一串括号,您可以经常使用堆栈审核它们能否婚配。

个性

队列是受限访问汇合中的另一种数据类型,就像前面探讨的堆栈一样。

关键区别在于队列是依照FIFO(先进先出)模型组织的:队列中第一个拔出的元素是第一个被移除的元素。

队列可以经常使用固定长度的数组、循环数组或链表来成功。

它们是做什么用的?

这种形象数据类型 (ADT) 的最佳用途当然是模拟事实生存中的队列。

例如,在呼叫核心运行程序中,队列用于保管期待从顾问那里取得协助的客户——这些客户应该依照他们呼叫的顺序取得协助。

一种不凡且十分关键的队列类型是优先级队列。

元素依据与它们关联的“优先级”被引入队列:具备最高优先级的元素首先被引入队列。

这个 ADT 在许多图算法(Dijkstra 算法、BFS、Prim 算法、霍夫曼编码 )中是必无法少的。

它是经常使用堆成功的。

另一种不凡类型的队列是deque 队列(双关语它的发音是“deck”)。

可以从队列的两端拔出/删除元素。

个性

Maps (dictionaries)是蕴含键汇合和值汇合的形象数据类型。

每个键都有一个与之关联的值。

哈希表是一种不凡类型的映射。

它经常使用散列函数生成一个散列码,放入一个桶或槽数组:键被散列,结果散列批示值的存储位置。

最经常出现的散列函数(在泛滥散列函数中)是模常数函数。

例如,假设常量是 6,则键 x 的值是x%6。

理想状况下,散列函数会将每个键调配给一个惟一的桶,但他们的大少数设计都驳回了不完善的函数,这或许会造成具备相反生成值的键之间出现抵触。

这种碰撞总是以某种方式顺应的。

它们是做什么用的?

Maps 最驰名的运行是言语词典。

言语中的每个词都为其指定了定义。

它是经常使用有序映射成功的(其键按字母顺序陈列)。

通信录也是一张Map。

每个名字都有一个调配给它的电话号码。

另一个有用的运行是值的规范化。

假定咱们要为一天中的每一分钟(24 小时 = 1440 分钟)调配一个从 0 到 1439 的索引。

哈希函数将为h(x) = x.小时*60+x.分钟。

个性

术语:

由于maps 是经常使用自平衡红黑树成功的(文章前面会解释),所以一切操作都在 O(log n) 内成功;一切哈希表操作都是常量。

图是表示一对两个汇合的非线性数据结构:G={V, E},其中 V 是顶点(节点)的汇合,而 E 是边(箭头)的汇合。

节点是由边互连的值 - 形容两个节点之间的依赖相关(有时与老本/距离相关联)的线。

图有两种关键类型:有向图和无向图。

在无向图中,边(x, y)在两个方向上都可用:(x, y)和(y, x)。

在有向图中,边(x, y)称为箭头,方向由其称号中顶点的顺序给出:箭头(x, y)与箭头(y, x) 不同。

它们是做什么用的?

个性

图论是一个宽广的畛域,但咱们将重点引见一些最出名的概念:

一棵树是一个无向图,在连通性方面最小(假设咱们消弭一条边,图将不再衔接)和在无环方面最大(假设咱们减少一条边,图将不再是无环的)。

所以任何无环连通无向图都是一棵树,但为了便捷起见,咱们将有根树称为树。

根是一个固定节点,它确定树中边的方向,所以这就是一切“开局”的中央。

叶子是树的终端节点——这就是一切“完结”的中央。

一个顶点的孩子是它上方的事情顶点。

一个顶点可以有多个子节点。

一个顶点的父节点是它上方的事情顶点——它是惟一的。

它们是做什么用的?

咱们在任何须要描画档次结构的时刻都经常使用树。

咱们自己的家谱树就是一个完美的例子。

你最新鲜的后人是树的根。

最年轻的一代代表叶子的汇合。

树也可以代表你上班的公司中的高低级相关。

这样您就可以找出谁是您的下级以及您应该治理谁。

个性

二叉树是一种不凡类型的树:每个顶点最多可以有两个子节点。

在严厉二叉树中,除了叶子之外,每个节点都有两个孩子。

具备 n 层的完整二叉树具备一切2ⁿ-1 个或许的节点。

二叉搜查树是一棵二叉树,其中节点的值属于一个齐全有序的汇合——任何恣意选用的节点的值都大于左子树中的一切值,而小于右子树中的一切值。

它们是做什么用的?

BT 的一项关键运行是逻辑表白式的表示和评价。

每个表白式都可以合成为变量/常量和运算符。

这种表白式书写方法称为逆波兰表示法 (RPN)。

这样,它们就可以构成一个二叉树,其中外部节点是运算符,叶子是变量/常量——它被称为形象语法树(AST)。

BST 经常经常使用,由于它们可以极速搜查键属性。

AVL 树、红黑树、有序集和映射是经常使用 BST 成功的。

个性

BST 有三种类型的 DFS 遍历:

一切这些类型的树都是自平衡二叉搜查树。

不同之处在于它们以对数期间平衡高度的方式。

AVL 树在每次拔出/删除后都是自平衡的,由于节点的左子树和右子树的高度之间的模块差异最大为 1。

AVL 以其发明者的名字命名:Adelson-Velsky 和Landis。

在红黑树中,每个节点存储一个额外的代表色彩的位,用于确保每次拔出/删除操作后的平衡。

在 Splay 树中,最近访问的节点可以极速再次访问,因此任何操作的摊销期间复杂度依然是 O(log n)。

它们是做什么用的?

AVL 仿佛是数据库切实中最好的数据结构。

RBT(红黑树) 用于组织可比拟的数据片段,例如文本片段或数字。

在 Java 8 版本中,HashMap 是经常使用 RBT 成功的。

计算几何和函数式编程中的数据结构也是用 RBT 构建的。

在 Windows NT 中(在虚构内存、网络和文件系统代码中),Splay 树用于缓存、内存调配器、渣滓搜集器、数据紧缩、绳索(交流用于长文本字符串的字符串)。

个性

最小堆是一棵二叉树,其中每个节点的值都大于或等于其父节点的值:val[par[x]]

数据结构有哪几种?

逻辑结构有4种基本类型:汇合、线性结构、树形结构和图形结构。

线性表和树是最罕用的两种高效数据结构,许多高效的算法都能用这两种数据结构来设计成功。

上方经过实例来进一步了解后3类数据结构。

1.线性结构

如图1-2所示的英文字母表形容的逻辑结构是线性结构,表中的每一个英文字母是一个数据元素。

该表中a和b相邻位于b的前面;对应的b位于a的前面。

相似地,表中其他数据元素之间也可以失掉这个论断。

所以说,每个元素之间存在惟一的顺序相关。

如图1-3所示的队列示用意形容的是另一种线性结构。

除了第一个和最后一个元素外,每个元素前后都只要一个元素,且元素之间存在惟一的顺序相关。

从图1-3可以看出,线性结构的逻辑相关包括以下几点。

·在非空的线性结构中,有且仅有一个开局结点a1,它没有间接前趋,而仅有一个间接后继a2.

·有且仅有一个终端结点an,他没有间接后继,而仅有一个间接前趋an-1。

·其他的外部结点ai(2≤i≤n-1)都且仅有一个间接前趋ai-1和一个间接后继ai+1.

2.树形结构

如图1-4所示形容的逻辑结构是树形结构图。

树形结构是一种非线性结构,树中蕴含一个数据元素及若干指向其子树的分支。

树中结点的相关是一对多的相关,相似于事实环球中造成的树。

从图1-4可以看出,树形结构的逻辑特色包括以下几点。

·其中有且只要一个称为根(root)的特定结点,它没有间接前趋,但有零个或多个间接后继,如图1-4(a)树的根为A。

·其他n-1个结点可以划分红m(m≥0)个互不相交的有限集T1、T2、T3、···、Tm,其中Ti又是一棵树,称为根root的子树。

每棵子树的根结点有且仅有一个相反的间接前驱,但有零个或多个间接后继。

例如,图1-4(a)树Ti为最左边含有B、E、F、J、K的分支,T2为两边含有C、G的分支,而T3为最左边含有D、L、I的分支。

3.图形结构

如图1-5所示形容的逻辑结构是图形结构。

图也是一种非线性结构,它是由非空的顶点汇合和一个形容顶点之间的相关—边(或许弧)的汇合组成。

从图1-5可以看出,图形结构的逻辑结构特色为:任何一个结点都可以有大于或等于零个前驱和大于等于零个后继。

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...