一、为什么要学习数据结构?

1.编译技术要使用栈、散列表和语法树。

2.操作系统中要使用队列。存储管理表和目录树。

3.数据库系统要使用线性表、多链表和索引树。

4.增强求解复杂问题的能力。

5.提高程序质量。

二、数据结构相关术语:

数据(Data):是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element):是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。也被称为“记录”。
数据项(Data Item):是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。

三.数据结构内容:

可以简单将数据结构理解为 数据的存储关系。

数据结构分为逻辑结构和物理结构(存储结构):

(1)逻辑结构:

指数据对象中数据元素之间的相互关系。

①集合结构

各个数据元素是“平等”的。集合结构中的数据元素除了同属于一个集合外,没有其他关系

②线性结构(linear structure)

线性结构中的数据元素之间是一对一的关系

③树形结构(tree structure)

树形结构中的数据元素之间是一对多的层次关系

④图形结构(graph structure)

图形结构的数据元素是多对多的关系

使用示意图表示数据的逻辑结构时,要注意:

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

 

(2)物理结构(存储结构):

指数据的逻辑结构在计算机中的存储形式。

实际上就是把数据元素存储到计算机的存储器中,这里的存储器主要针对的是内存,外存的数据组织通常用文件结构来描述。 

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

数据的物理结构形式有两种:顺序存储和链式存储。

 

①顺序存储结构/顺序映像(如数组):

把数据元素存放在地址连续的存储单元里,数据之间的存储关系和逻辑关系是一致的。

 

②链式存储结构/非顺序映像(如链表):

把数据元素存放在任意的存储单元里,这组存储单元可以是连续的也可以是不连续的。

数据元素的存储关系并不能反应其逻辑关系。所以要用一个指针来存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。

(3)运算集合

增、删、改

 

数据结构的内容:按某种逻辑关系组织起来的一批数据,按一定的映像方式把它存放在计算机存储器中,并在这些数据上定义了一个运算集合,就构成数据结构的基本内容。

 

四、抽象数据类型(Abstract Data Type)

1.c语言中数据类型分为两种:

2.抽象数据类型(ADT):指一个数学模型及定义在该模型上的一组操作。

  • 定义:抽象数据类型体现了程序设计中问题分解和信息隐藏的特征。
  • 举例:用线性表描述学生成绩、用树或图描述遗传关系。

线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素存在这样的关系:除第一个和最后一个外,每个元素都有唯一的前趋和后继。就可以有对元素的插入和删除。

描述抽象数据类型的标准格式: