Skip to main content

第一章 数据结构概论

Archived University Note

This content is from my university archives and may not be reliable or up-to-date.

基本概念和常用术语

1. 数据结构研究的内容

  • 数据:数据是描述客观事物的数值、字符以及能输入计算机中并被计算机处理的符号的组合(数据是抽象化了的数据,包括数字、字符、图形、图像、声音等)
  • 数据元素:数据元素是数据的基本单位
  • 数据对象:具有相同特性的数据元素的集合,是数据的子集
  • 结构:结构指的是数据元素之间的相互关系,数据的组织形式
  • 结点:结构中的数据元素

数据结构

  1. 数据元素之间的逻辑关系 - 逻辑结构
  2. 数据元素及其关系再计算机储存器内的表示,称为数据的存储结构
  3. 数据的运算,即对数据施加的操作

2. 数据的逻辑结构

数据的逻辑结构

表中任一个结点,与它相邻且在它前面的结点称为直接前驱,这种直接前驱最多只有一个;与表中任一结点相邻且在其后面的结点称为直接后继,直接后继最多只有一个。第一个结点没有直接前驱,称为开始结点;最后一个结点没有直接后继,称为终端结点。

  • 线性结构:有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。线性表是线性结构
  • 非线性结构:一个结点可能有多个直接前驱和直接后继(广义表、树、图)

3. 数据储存结构

数据的存储结构是逻辑结构用计算机语言的实现(映像),它是依赖于计算机语言的。

四种基本的存储方法

  1. 顺序存储:把逻辑上相邻的结点存储在物理位置相邻的存储单元里
  2. 链式存储:用一组不一定连续的存储单元存储逻辑上相邻的结点,结点见的逻辑关系是由附加的指针域来表示的
  3. 索引存储:存储结点信息的同时,建立附加的索引表。表中索引项的一般形式是含有关键字和地址,关键字是能唯一标识一个结点的数据项
  4. 散列存储:根据结点的关键字直接计算出该结点的存储地址

同一种逻辑结构采用不同的存储方法,可以得到不同的存储结构,逻辑结构、数据的存储结构及数据的运算应看成一个整体。

4. 数据的运算

数据的运算是定义在数据的逻辑结构上的,每种逻辑结构都有一个运算的集合,常用的运算有检索、插入、删除、更新、排序等。

对线性表的插入、删除运算限制在表的一端进行,成为栈;对线性表的插入运算限制在表的一端,删除运算限制在表的另一端,称为队列

5. 数据类型

一个值的集合和定义在这个值集上的一组操作的总称

  1. 原子类型:值不可分解
  2. 结构类型:其值可由若干个分量按某种结构组成,它的分量可以是非结构型的

6. 抽象数据类型 (Abstract Data Type)

抽象数据的组织和与之相关的操作

算法描述

  1. 输入:算法开始前必须对算法中用到的变量初始化。一个算法的输入可以包含零个或多个数据
  2. 输出:算法至少有一个或多个输出
  3. 有穷性:算法中每一条指令的执行次数是有限的,算法必须在执行有限步之后结束
  4. 确定性:算法中每一条指令的含义都必须明确,无二义性
  5. 可行性:算法是可行的,算法中描述的操作都可以通过有限次的基本运算来实现
  • 执行算法所消耗的时间,即时间复杂性
  • 执行算法所耗费的存储空间(辅助空间 空间复杂性)
  • 算法应易于理解、易于编程、易于调试,即可读性和可操作性
  • 一个算法所消耗的时间,应该是算法中每条语句的执行时间之和。每条语句执行的次数称为频度