What & How & Why

这是本文档旧的修订版!


数据结构概论

大话数据结构 笔记 第一章
我的笔记均包含大量个人理解内容,存在一定偏差。如果您发现错误,请留言提出,谢谢!

1.数据结构的起源

数据结构是一门研究非数值运算的程序设计问题中的操作对象,以及他们之前的关系和操作等相关对象的学科。这意味着我们用计算机解决问题,首先要解决一些对象之前的关系与操作的问题。数据结构和算法,就是因由这些问题应用到计算机中的。总的说来,我们有一个比较概念化的公式如果下:

$$程序结构 = 数据 + 算法$$

1968年美国的 Donald E. Kunth 教授在其所写的《计算机程序与艺术》第一卷《基本算法》里首次较为系统的阐述了数据的逻辑结构、存储结构和这些数据的相关操作;这被视为数据结构课程的开端。

2.基本概念

数据结构作为研究数据的一门学科,我们先得知道什么数据。 简单的来说:数据可以细致的分为:

  • 数据:计算机用于描述客观事物的符号,可以输入计算机,并被计算机操作
  • 数据元素:组成数据的基本单位。数据元素对于数据来说,就像鸡对应于家禽一样,是数据的实例。
  • 数据项:元素的组成部分,数据的最小元素,比如鸡爪子之于鸡。
  • 数据对象:性质相同的数据元素集合,是数据的子集。
  • 数据结构:现实世界中,不同元素之间存在特定的关系。我们用数据结构来描述计算机中相互存在一种或者多种特定关系的数据元素集合

3.数据结构的分类

数据结构分为逻辑结构物理结构

3.1.逻辑结构

逻辑结构表达了数据对象中数据元素之间的相互关系,大致分为四种类型:

  1. 集合结构:集合结构中的数据元素除了同属一个集合外,没有任何其他的关系。他们的共同属性是“同属于一个集合”,这个概念源自于数学中集合的概念。
  2. 线性结构:数据元素在线性结构中呈现出一对一的关系。
  3. 树形结构:数据元素在树形结构中存在着一对多的关系。
  4. 图形结构:数据元素在图形结构中存在着多对多的关系。

我们可以形象的用示意图来表示数据的逻辑结构:

  • 把每一个数据元素看做一个节点,用圆圈表示。
  • 元素之间的逻辑关系用节点之间的连线表示,如果是有向的,就用箭头连线表示。

3.2.物理结构

物理结构(存储结构)表示了数据的逻辑结构在计算机中的存储方式