前言
····························································
前言Foreword数据结构的概念最早由C.A.R.Hoare于1966年提出。在他的经典论文《数据结构笔记》中,首次系统地论述了一组数据结构的构造、表示和操作等问题。1973年,E.Knuth在《计算机程序设计技巧》第一卷中给出了关于“信息结构”的系统论述。1976年,N.Wirth用“算法+数据结构=程序”这个公式表达了算法与数据结构的联系和它们在程序设计中的地位,从此确立了数据结构在计算机相关专业中的核心基础课程地位。
数据结构的研究不仅涉及计算机硬件(编码理论、存储装置和存取方法)的研究范围,而且和计算机软件的研究有着密切的关系,因此数据结构可以认为是介于数学、计算机硬件和计算机软件之间的一门核心课程。在计算机科学中,它不仅是程序设计的基础,而且是设计和实现操作系统、数据库系统和大型应用系统的重要基础。
“数据结构”课程的主要任务是讨论现实世界中数据的各种逻辑结构、在计算机中的存储结构以及进行各种非数值运算的算法。本书主要内容包括线性表、栈、队列、串、数组、广义表、树和二叉树、图、动态存储管理、查找、排序。
通过本课程的学习,使学生掌握数据组织、存储和处理的常用方法及基于各类常见数据结构的算法设计与分析,进一步强化学生的编程能力,为以后进行软件开发和学习后续专业课程打下基础。
在长期的教学过程中,我们认为,“数据结构”是一门兼具理论性与实践性的课程,在掌握程序设计语言后,本课程还是一门加强与提高学生程序设计能力的重要课程。因此,本书以传统的数据结构的主要内容为主线,在充分讨论结构的逻辑特征与存储表示的基础上,用C语言完成数据结构的描述和实现。同时,我们更加强调数据结构的应用,对不同的数据结构类型设计多个应用实例,每一算法或程序的编写力求高效、易读,并遵循程序设计的规范,从而帮助读者将数据结构与工程应用有机地结合起来。
在专业程序员的成长过程中,对于数据结构与算法的学习至关重要。虽然有许许多多关于数据结构与算法的书籍,但是本书把数据结构的原理和算法分析技术有机地结合在一起,系统地介绍了各种类型的数据结构和排序、检索的各种算法,以C语言作为算法描述语言,通过C语言实现具体算法,能够更好地让学生理解各种数据结构的基本描述方法,借助抽象数据类型,从逻辑结构的角度系统地介绍线性表、栈、队列、串、数组、矩阵、广义表、二叉树、树和图等各种基本数据结构;从算法的角度讨论查找方法和排序算法;从应用的角度介绍一些具体的算法在C语言下的实现代码。
书中不当之处,恳请广大读者指正。
编者2016年7月