这学期终于要开始数据结构啦,由于学校这门课安排得比较晚,应该安排上一学期的,可毕竟是学校安排的。于是小编就趁着没事时学了一点,哈哈哈。
学校考试也接近尾声了,每天坚持一篇文章的输出其实不难,让小编想到的是如何让大家都能看懂,甚至能做到既能让大家读懂,也能让各位读者读出有趣感,这对于我个人而言显然不是那么的容易,但还是想试试,哈哈,若有写得不好的地方,还请大家积极指出呀。
数据结构的起源
可能大家在开始接触编程时面对黑黑的输出窗口显得茫然,既没有移动手机上的视觉感,也没有电脑上软件的操作感,那种感觉仿佛进入了一个假的专业,我这是学的计算机?就一团黑漆漆的窗口???
扯得有点远哈,回到编程,我们最开始写程序其实也是挺简单的,只需能运行成功即可,木有出现红色的报错那真就叫一个激动。可能这也是留住我们的原因,hahaha,这理由有点牵强。
那么我们回到编程的实质,我们为什么要写程序呢?简单来说就是为了解决某个问题,那么我们在开始解决一个问题之前应该做些什么呢?是否应该要从某个具体问题中抽象出一个解决模型,比如应该先做什么,再做什么,然后我们还会考虑到这个模型是要给别人使用的,那么这就会产生一些用户数据,将这个模型和用户数据联合起来我们便会得到一个适当的数据模型。
然后我们将这个数据模型和设计的算法(后面会讲到)糅合到一起写成一个程序,便会得到一个实际的软件。
显然数据结构并不是独立存在的,所以对于它的定义小编其实是不太喜欢的,对于一个非独立的名词去定义它其实意义并不大。但是小编还是会给大家放出来啦!
数据结构:是计算机中存储、组织数据的方式。(来源于维基百科)
基本概念和术语
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
To:那么数据都有哪些呢?其实数据也就是符号,而这些符号具备两个前提:可以输入到计算机中;能被计算机程序处理。这里举几个例子:比如我们我们听歌的mp3便是声音数据,图片便是图片数据,或者直接说万物皆可数据化
。
数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。比如在某类动物中某个动物就是单个的数据元素。
数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。数据项也是数据的最小单位,但在讨论问题时,我们习惯于将数据元素当作数据结构中建立数据模型的着眼点。
数据对象:是性质相同的数据元素的集合,是数据的子集,在不产生混淆的情况下,也可将数据对象简称为数据。
数据结构:结构则是指各个组成部分相互搭配和排列的方式,那么数据结构相互之间存在一种或多种特定的数据元素的集合。
两大结构:逻辑结构和物理结构
逻辑结构(为了解决某个问题,面向问题)和物理结构(面向计算机)
逻辑结构:指对象中数据对象中数据元素之间的相互关系,主要分为以下四种。
物理结构(存储结构):是指数据的逻辑结构在计算机中的存储形式。
聊到存储结构,还得再聊聊存储器:主要针对内存而言的,像DVD光盘,硬盘,软盘等外部存储器的数据组织通常就是用文件结构来描述的。
数据元素的存储结构(数据的存储结构应正确反映数据元素之间的逻辑关系)有两种:顺序存储和链式存储。
1.顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间逻辑关系和物理关系是一致的。可以简单理解为大家在打饭排队一样,是按顺序的排好。
2.链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。在链式存储中大多需要指针来存放一个数据的地址,然后通过地址便能找到相关数据元素的地址。在指针加入后,链式存储就显得灵活多了,不管我们将数据存储在那个地方,只需有一个指针存放了该数据的地址,我们便能找到它。
抽象数据类型
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
抽象是指抽取出事物具有的普遍性的本质。需要注意的是它抽出问题的特征而忽略非本质的细节。其实抽象也算是人的大脑思考的一种方式,将某个事物进行拆分,然后找到其本质特征。
抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。它的定义也仅仅取决于它的一组逻辑特性,与在计算机内部怎么实现它无关,抽象数据类型体现了程序设计中问题分解,抽象和信息隐藏的特性,也就是说它把实际中的生活问题分解成多个小且容易解决的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体的实现过程隐藏起来。
以上内容部分定义出自书籍《大话数据结构》若有侵权,侵删