数据结构 起源
·If you give someone a program,you will frustrate them for a day;if you teach them how to program,you will frustrate them for a lifetime.大佬说学习数据结构总结一句话,便是痛并快乐着!
·数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
·数据结构的起源
- 数值计算与非数值计算
- 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
- 程序设计 = 数据结构+算法
·基本概念和术语
- 数据
(1) 数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符合集合。(数据的形式化定义)
(2) 数据包括整形、实数型等数值类型,还包括字符及声音、图像、视频等非数值类型。但非数值类型并不能直接存储,而是以字符编码所存储。
(3) 数据其实就是符号,而这些符号必须具备两个前提:
① 可以输入到计算机中。
② 能被计算机程序处理。
- 数据元素:数据元素是组成数据的、有一定意义的基本单位,在计算机中通常被作为整体(一个小的分子)处理。也被称为记录。比如在R集中的,每一个实数就是R的一个数据元素。
- 数据项:一个数据元素可以由若干个数据项(原子)组成。数据项不可再分。但是在研究我们数据结构的时候,是基于分子的,即数据元素本身。
- 数据对象:是性质相同的数据元素的集合,是数据的子集。所谓性质相同是指数据元素的数据项具有相同的结构。数据对象一般意义上成为数据。
- 数据结构:
(1) 结构,是指系统的各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系成为结构。
(2) 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。即数据对象(数据元素的集合)+数据元素(节点)之间的关系(线性与非线性)
·数据结构的两种模式(与冯诺依曼体系相关)
- 逻辑结构:是指数据对象中数据元素之间的相互关系。
(1) 集合结构:数据元素除了同属一个集合外,没有其它关系。就是数学中的集合。
(2) 线性结构:数据元素之间是一对一的关系。
(3) 树形结构:数据元素存在一对多的层次关系。
(4) 图形结构:数据元素是多对多的关系。
- 物理结构(存储结构):是指数据的逻辑结构在计算机中存储形式。
(1) 顺序存储结构:是指数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。例如数组。
(2) 链式存储结构:把数据元素存放在任意的存储单元中,这组存储单元可以是连续的,也可以不是不连续的。每一个元素包含了下一个元素的地址信息,通过指针保存。物理上不是一一对应的,而逻辑上是一一对应的。
(3)索引结构:关键字与地址一一对应,属于广义上的映射。
(4)散列结构:哈希--->存在函数(映射)关系,通过关键字查询
·抽象数据类型
- 数据类型:一组性质相同的值的集合,以及定义在此集合上的一些操作(运算)的总称。
比如int型、boolean型等都属于数据类型;int型是由一系列整数组成,这些整数便是一组性质相同的值的集合,而boolean型是由两个值TRUE和FALSE组成。
- 抽象数据类型:Abstract Data Type,ADT;一个数学模型及定义在该模型上的一组操作。ADT只与逻辑有关,与具体在计算机中的表示和实现无关。