高薪算法+计算机职称考试数据库数据结构数据结构

数据结构浅析(一):数据结构基本概念

2015-12-25  本文已影响2707人  JonyFang

首先会有个疑问,什么是数据结构呢?

数据结构(data structure),可以概括为是互相之间存在一种或多种特定关系的数据元素的集合。

开篇配图来自网络... 那开始吧 :)

一、数据结构起源

1968年,美国 Donald E. Knuth 教授在《计算机程序设计艺术》第一卷《基本算法》中系统阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构课程体系。

70年代初,大型程序相继出现,软件也开始相对独立,结构程序设计成为程序设计方法学主要内容,人们开始认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。也就是 程序设计 = 数据结构 + 算法

现实生活中,更多的不是解决一些数值计算问题,我们需要通过表、树、图等数据结构的帮助来更好地处理问题。

所以数据结构也是一门研究非数字计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。(引用自《大话数据结构》

二、基本概念和术语

1、数据
2、数据元素
3、数据项
4、数据对象
5、数据结构

三、逻辑结构和物理结构

1、逻辑结构
2、物理结构

逻辑结构面向问题,物理结构面向计算机,其基本目标是将数据及其逻辑关系存储到计算机的内存中。

四、抽象数据类型

1、数据类型是什么?

数据类型指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

看起来有点模糊,接着往下看。

数据类型按照值的不同进行划分。在高级语言中,每个变量、常量、表达式都有各自取值范围。类型就用来说明变量或表达式的取值范围和所进行的操作。

计算机的内存是有限的,如果只是单纯计算 1+1 =2这样的整型数字运算,我们不需要开辟很大的内存空间,只要满足相应需求的内存空间就可以了。于是计算机领域的前辈们对数据进行分类,不同的数据类型拥有各自的取值范围。这样就可以更好利用有限的内存空间。

例如 C 语言中,数据类型可以分两类:

2、抽象数据类型

1). 上面解释了什么是数据类型,那么为什么要把数据类型抽象出来呢?

不同的计算机有不同的硬件系统,所以需要程序语言最终通过编译器或解释器转化成计算机能够识别的底层语言。然而在我们使用高级语言开发时,如计算 1+1 ,不管最终程序运行在什么计算机上,我们的目的只是为了实现 2 个整型数字的运算,不需要详细知道 CPU 为了实现 1+1 进行了几次开关操作。但无论什么计算机、什么计算机语言都会面临如整数运算这样的操作,那么可以考虑把它们抽象出来,只保留实现目标所必需的信息。

2). 什么是抽象数据类型?
抽象数据类型(Abstract Data Type, ADT):指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于他的一组逻辑特性,与其在计算机内部如何表示和实现无关。

3). 抽象数据类型有什么意义?
"抽象"的意义在于数据类型的数学抽象特性。一个抽象数据类型定义了一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作。

理论的东西说起来总是那么模糊,看一个例子就会发现清晰明了了。

还是之前整数计算的例子。计算机分很多种,大型机、小型机、PC、智能手机等等,但是任何一种都有“整型数据”,也都需要进行“整型数据”运算。那么这里的整型其实就是一个抽象数据类型,它在不同计算机内的实现方法可能不同,但定义的数学特性相同,所以在我们看来是相同的。

抽象数据类型理论的东西提的比较多,概括下也就是为什么会有各种不同的数据类型,同时解释这些数据类型存在的意义是什么...

总结

直接上图吧,一图胜千言...


数据结构层次
逻辑结构与物理结构

本文参考:

《大话数据结构》

Wikipedia - Donald E. Knuth

戳这里 前往我的小屋:I'm Jony :)

上一篇 下一篇

猜你喜欢

热点阅读