大话数据结构(一)数据结构相关概念

目录

 数据结构的基本概念和术语

1.数据

2.数据元素

3.数据项

4.数据对象

逻辑结构和物理结构

抽象数据类型

总结


在这里说一下,大学的时候学习过数据结构,但是根本不深入,现在重新学习一遍数据结构和算法知识,主要是为了明年的秋招做准备,因此将最近学习过的知识在博客上重写一遍,加深记忆,也是锻炼自己的思维能力,提升代码量。

因为大话数据结构这本书是基于C语言来描述的,因此对于大部分学习过C、C++、C#、JAVA等语言的同学来说,理解起来不会很吃力。另外因为各种语言都有共通性,因此只要理解算法的核心思想,再在各种语言编译器中复现是相对容易得事情。废话不多说,下面开始大话数据结构第一章重要知识点的讲解和总结。

  • 什么是数据结构

数据结构简单来说就是在计算机上要来处理某种存储、组织数据的方式,计算机中的数据之间不是杂乱无章的,也不是毫无关系的,相反,数据要进行交互,就需要数据结构来整理归纳。它表现了数据的逻辑结构和存储结构及其操作。在某种程度上来说,数据结构是算法的衍生产品,它与算法的关系非常密切,算法(第4版)将数据结构表述为算法的最终呈现形式,在我看来,这种说法非常准确,要学习算法必须要有数据结构的知识体系,很简单的算法实现可能都包括复杂的数据结构,换句话说,选择合适的数据结构可能创造出非常简单易懂但是时间效率非常高的算法,这会在后面算法设计的要求中讲到。

  •  数据结构的基本概念和术语

1.数据

数据就是描述客观事物的符号,在计算机中是可以操作的对象,在具体的语言中,可以将它们看做计算机可以操作的符号,计算机只认识1和0,因此声音、图像等数据是可以通过编码的手段变成字符数据让计算机进行处理的。另外提一嘴,数据库可以看做一个种群,在数据库这个大家庭中,每天都会有成员死去、诞生以及新陈代谢等,这就对应数据库的删除、新增、更新等操作。这样比喻是不是就比较形象。

2.数据元素

数据元素:可以将数据元素看做数据的子集,他是数据的基本单位,数据由若干个数据元素组成。

3.数据项

数据项:很好理解,数据元素是由若干个数据项组成的,这个对应语言类中的方法与属性的关系,一个人有什么属性呢,当然是要有一个鼻子、两只眼睛、两条腿等硬性指标是吧,不然就不是人是怪物了,另外人还得要有自己的姓名吧,唯一的身份证吧。不然两个人都没办法区分了。另外数据项是数据的最小单位,在数据结构研究中我们应该着眼于数据元素的研究,而不是数据项的研究,毕竟你爱上一个女孩子(男孩子),不只是因为她/他的名字或者身材对吧。

4.数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。

  • 逻辑结构和物理结构

数据结构按观点可以划分为逻辑结构和物理结构

逻辑结构包括:集合结构(对应于中学学过的集合的概念,当然大学的概率论也会涉及)、线性结构(线性表、栈、队列、串)、树形结构(二叉树、B树、红黑树对吧)、图形结构(脑袋里是不是蹦出了最短路径、Prim算法、Dijkstra算法等概念)

物理结构包括:顺序存储结构、链式存储结构

顺序存储结构很好理解,就是将一堆数据元素按着一定的顺序放在连续的存储单元中,他们之间的关系是紧密相连的,说白了,就是每个数据元素有自己的座位,它不能像校霸一样独占两个人的座位,也不能去其他班上课,上课的时候只能在自己的位置乖乖坐着。

而现实中并不会有如此规律的事情发生,日方中方睨,物方生方死任何事物都是在不断变化的。因此,为了应对这种随时都有可能变化的结构,顺序存储就显得力不从心了。拿一个例子来比喻,你想去吃海底捞,到了店门口,服务员笑脸迎接:"先生/小姐,您们几位啊,我们这里座位满了,要不您排个号,等位置空出来了,我们再联系您。"。那这时候服务员给你一张排号单,你在单子上写上自己的电话号码,接下来他可就不管你咯,忙着招呼下一个顾客去了,那这个时候你是不是打算回商场再逛一逛,或者去负一楼买点小零食填填肚子呢?只要及时回来,那么就能吃上小火锅。那么这个时候,我们关注的就不是在我前面排队的是谁,而是有没有叫到我们的号。

现在我们回到数据结构的知识体系上来,我们把自己当做一个数据元素,把排号单看做一个指针,当服务员看到有座位空出来了的时候,是不是就联系我们排号单上写好的联系电话(指针),通过这个指针来寻找我们的地址,那么我们当时所在的位置就不重要了,只要有指针存放了我们的地址服务员就能联系上我们。这种结构不要求数据元素都按着指定的顺序排队,只要能反映数据元素之间的逻辑关系,就可以找到想要的那个数据元素。

  • 抽象数据类型

数据类型,这个概念在其他的编程学习书中都讲的很详细了,像int、char、byte、long在这里就不再赘述,另外各个数据类型的值域需要了解一下,在处理比较大的数据的时候应当选择适当的数据类型,其他的像java中转换的字符串宽度和负宽度的概念不记得可以再翻一翻资料。

抽象数据类型在我看来使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储,它的存在只是为了描述清楚一个数据模型。

总结

第一部分主要描述了数据结构一些基本的概念。包括数据、数据对象、数据元素的关系。数据结构按分类包括逻辑结构和物理结构,逻辑结构又包括:集合结构、线性结构、树形结构、图形结构;物理结构包括:顺序存储结构、链式存储结构,最后还提了一下数据类型和抽象数据类型的一些观点和看法。

发布了22 篇原创文章 · 获赞 2 · 访问量 495

猜你喜欢

转载自blog.csdn.net/weixin_42709632/article/details/101102452