数据结构-----有待梳理

  • 1968年美国唐纳德·克努特(Donald Ervin Knuth)教授开创了数据结构的最初体系,他所著的《计算机程序设计艺术》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。

“数据结构”在计算机科学中是一门综合性的专业基础课,数据结构是介于数学、计算机硬件和计算机软件三者之间的一门

核心课程。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构可以带来更高的存储或者运行效

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

  • 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
  • 即:数据结构 = 数据集合 + 关系(元素间关系)

《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。抽象层是指数据的逻辑

结构及其运算,数据结构层指数据表示和在计算机内的存储细节,实现层讨论程序运算的实现。

  • 数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分:

逻辑结构:

             集合结构、线型结构、树型结构,图型结构

存储结构:

            顺序存储结构、链接存储结构、索引存储结构、散列存储结构

            一种逻辑数据结构可表示成一种或多种存储结构,且各种存储结构影响数据处理的效率。存储结构是逻辑结构的

            实现行式。

运算结构

 

  • 在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素,是否选择了最优的数据结构。

1、许多时候,确定了数据结构后,算法就容易得到了。

2、有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。

3、不论哪种情况,选择合适的数据结构都是非常重要的。

  • 计算机科学是一门研究用计算机进行信息表示处理的科学。这里面涉及到两个问题:信息的表示信息的处理

1、而信息的表示和组织又直接关系到处理信息的程序的效率。众所周知,计算机的程序是对信息进行加工处理。

2、在大多数情况下,这些信息并不是没有组织,信息(数据)之间往往具有重要的结构关系,这就是数据结构的内容。

数据的结构,直接影响算法的选择和效率。

  • 计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。

1、寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言描

述。

2、当人们用计算机处理数值计算问题时,所用的数学模型是用数学方程描述。所涉及的运算对象一般是简单的整形、实

型和逻辑型数据,因此程序设计者的主要精力集中于程序设计技巧上,而不是数据的存储和组织上。

3、然而,计算机应用的更多领域是“非数值型计算问题”,它们的数学模型无法用数学方程描述,而是用数据结构描述,解

决此类问题的关键是设计出合适的数据结构,描述非数值型问题的数学模型是用线性表、树、图等结构来描述的。

  • 计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。
  • 数据是信息的载体,是可以被计算机识别存储并加工处理的描述客观事物的信息符号的总称。所有能被输入计算机中,且能被计算机处理的符号的集合,它是计算机程序加工处理的对象。客观事物包括数值、字符、声音、图形、图像等,它们本身并不是数据,只有通过编码变成能被计算机识别、存储和处理的符号形式后才是数据。
  • 数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构存储结构物理结构)和数据的运算。数据的逻辑结构是从具体问题抽象出来的数学模型,是描述数据元素及其关系的数学特性的,有时就把逻辑结构简称为数据结构。数据处理是指对数据进行查找插入、删除、合并、排序、统计以及简单计算等的操作过程。
  • 存储结构:

顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来

体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中

数组来实现。

链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得

到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。

索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址

散列存储法:就是根据结点的关键字直接计算出该结点的存储地址。

  • 数据结构中,逻辑上(逻辑结构:数据元素之间的逻辑关系)可以把数据结构分成线性结构非线性结构

线性结构的顺序存储结构是一种顺序存取的存储结构,线性表的链式存储结构是一种随机存取的存储结构。线性表若采用

链式存储表示时所有结点之间的存储单元地址可连续可不连续。

  • 算法的设计取决于数据(逻辑)结构,而算法的实现依赖于采用的存储结构。数据的存储结构实质上是它的逻辑结构在计算机存储器中的实现,不同数据结构有其相应的若干运算。数据的运算是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序等。        

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVE-2021-31805是一个远程命令执行漏洞,该漏洞是由于对CVE-2020-17530的修复不完整而引起的。CVE-2020-17530是由于Struts2对某些标签属性的属性值进行二次表达式解析而导致的漏洞。当这些标签属性中使用了%{x}并且x的值可被用户控制时,用户可以传入%{payload}来执行OGNL表达式。在CVE-2021-31805漏洞中,仍然存在部分标签属性会导致攻击者构造的恶意OGNL表达式执行,从而导致远程代码执行。该漏洞可能影响的版本有待进一步确认。 根据给出的引用信息,无法提供关于漏洞的具体细节或利用方式。请注意,这是一个安全漏洞,为了保护系统安全,建议及时修复该漏洞或采取相应的安全防护措施。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [apache stucts 2远程命令执行漏洞 (CVE-2021-31805) poc检测工具](https://download.csdn.net/download/weixin_59679023/85194448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [S2-062 远程命令执行漏洞复现(cve-2021-31805)](https://blog.csdn.net/qq_44110340/article/details/124279481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值