第一章
绪论
用计算机求解任何问题都离不开程序设计,程序设计的实质是数据表示和数据处理。数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为数据表示,其核心是数据结构;一个实际问题的求解必须满足各项处理要求,这项任务称为数据处理,其核心是算法。
1-1数据结构在程序设计中的作用
计算机不能分析问题并产生问题的解决方案,必须由人(既程序设计者)分析问题,确定问题的解决方案,采用计算机能够理解的指令描述这个问题的求解步骤(既编写程序),然后让计算机执行程序最终获得问题的解。
图灵奖获得者沃思给出了一个著名的公式:数据结构+算法=程序。从这个公式可以看出,数据结构和算法是构成程序的两个重要的组成部分,一个“好”程序首先是将问题抽象出一个适当的数据结构,然后基于该数据结构设计一个“好”算法。对于许多实际的问题,写出一个可以正确运行的程序还不够,如果这个程序在规模较大的数据集上运行,那么运行效率就成为一个重要的问题。
1-2本书讨论的主要内容
计算机能够求解的问题一般可以分为数值问题和非数值问题。数值问题抽象出的数据模型通常是数学方程,非数值问题抽象出的数据模型通常是线性、树、图等数据结构。
本书讨论非数值问题的数据组织和处理,主要内容有如下4点:
1)数据的逻辑结构:线性表、树、图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。
2)数据的存储结构;如何将线性表、树、图等数据结构存储到计算机的存储器中,其核心是如