1、本书讨论的非数值问题的数据组织和处理,主要内容为以下四点:
数据的逻辑结构:线性表、树、图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。
数据的存储结构:如何将线性表、树、图等数据结构存储到计算机的存储器中,其核心是如何有效地存储数据以及数据间的逻辑关系
算法:如何基于数据的某种存储结构实现插入、删除、查找等基本操作,其核心是如何有效地处理数据
常用数据处理技术:包括查找技术、排序技术、索引技术等。
2、数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
可以将数据分为两类:数值数据和非数值数据
3、数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
构成数据元素的不可分割的最小单位称为数据项。
4、数据结构是指相互之间存在一定关系的数据元素的集合。
数据结构分为逻辑结构和存储结构。
逻辑结构指数据元素之间逻辑关系的整体。
数据结构分为四类:集合、线性结构、树结构、图结构,而树结构和图结构又被称为非线性结构
数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。分为顺序存储结构和链接存储结构两类。
数据的逻辑结构是面向问题的,存储结构是面向计算机的。
5、数据类型是指一组值的集合以及定义于这个值集上的一组操作的总称。数据类型规定了该类型数据的取值范围和对这些数据所能采取的操作
抽象数据类型(ADT)是一个数据结构以及定义在该结构上的一组操作的总称。
6、数据类型与ADT的区别:数据类型指的是高级程序设计语言支持的基本数据类型,而ADT指的是自定义的数据类型。
7、算法:解决问题的方法。包含五个特性:输入、输出、有穷性、确定性、可行性。
好算法的五个特性:正确性、鲁棒性(即健壮性,是算法对非法输入的抵抗能力)、简单性、抽象分级、高效性。
8、算法的描述方法:自然语言、流程图、程序设计语言、伪代码。
自然语言:优点是容易理解,缺点是容易出现二义性、并且冗长。
流程图:优点是直观易懂,缺点是严密性不如程序设计语言,灵活性不如自然语言
程序设计语言:优点是能由计算机直接执行,缺点是抽象性差,并且还要求算法设计者掌握程序设计语言及其编程技巧。
伪代码:是一种介于自然语言和程序设计语言之间的方法。
伪代码又称为算法语言或第一语言。
课后习题:
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据项是数据的基本单位,数据元素是讨论数据时涉及的最小数据单位。
数据结构指的是数据元素以及数据元素之间的关系。
从逻辑关系上讲,数据结构主要分为集合、线性结构、树结构、图结构。
数据存储结构主要有顺序存储结构和连接存储结构两种基本方法,不论哪种存储结构,都要存储两方面的内容:数据元素和数据元素之间的关系。
算法具有五个特性,分别是有零个或者多个输入、有一个或多个输出、有穷性、确定性、可行性。
算法的描述方法通常有自然语言、程序设计语言、流程图和伪代码四种,其中伪代码被称为算法语言。
顺序存储结构中数据元素之间的逻辑关系是由存储位置表示的,连接存储结构中的数据元素之间的逻辑关系是由指针表示的。
计算机所处理的数据一般具有某种内在联系,这是指元素和元素之间存在某种关系。
相同的逻辑结构对应的存储结构是不一定相同的。
可以用抽象数据类型定义一个完整的数据结构。
抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。
算法指的是对特定问题求解步骤的一种描述,是指令的有限序列。
算法分析的目的是分析算法的效率以求改进,算法分析的两个主要方面是空间性能和时间性能。
算法的时间复杂度要通过算法中基本语句执行次数的数量级来确定。
数据的逻辑结构是数据之间的逻辑关系的整体。
逻辑结构与数据元素本身的内容和形式无关。因此逻辑结构是数据组织的主要方面。
基本操作的实现是基于某种存储结构设计的,并不是唯一的。
选择和评价数据结构的标准语方法是什么?
首先,对给定的实际问题可以建立起不同的数据结构;其次,对于给定的数据结构,可以选择不同的存储实现,即采用不同的存储结构;再次,在给定数据结构和存储结构的条件下,对同一基本操作可以设计出不同算法。因此,数据的逻辑结构、存储结构和操作(特别是基本操作)的实现是密切相关的。一般的,在建立数据结构时应该考虑以下三个方面:
【1】 确定表示问题所需的数据及其特性。
【2】 确定必须支持的基本操作,并度量每种操作所受的时、空资源限制,某些重要的操作,例如查找、插入和删除的资源限制通常决定了数据结构的选择。
【3】 选择(或设计)最接近这些开销的数据结构