第二版前言

数据结构是计算机专业及相关专业的一门重要的专业基础课程。它不仅是计算机程序设计的理论基础,还是学习计算机操作系统原理、编译原理、数据库原理等课程的重要基础。

数据结构的主要任务是讨论数据的各种逻辑结构和数据在计算机中的存储表示,以及各种非数值运算的算法的实现。通过数据结构课程的学习,使学生能使用数据结构的基本分析方法来提高编写程序的能力和应用计算机解决实际问题的能力。

本书编写的定位是大学本科和高职、高专计算机专业的学生,采用“以应用为目的,以够用为度”的原则,从应用实际的需要出发,大胆取舍,注重实用性。

从体系结构而言,本书以“数据结构实验演示系统”为主线来组织教材的编写。每一章的主要算法构成一个相对独立的子系统(即子模块),子系统既是各章教学的重点内容,也是上机实验的主要算法。各个子系统可以通过菜单的选择对本章的基本算法进行实验和演示,也可以用它来检验相关习题的正确性。而系统又是开放式的,学生可以将自行设计的数据结构其他算法扩充到这个实验演示系统中去。

本书内容共分11章,第1章绪论,介绍了数据结构与算法的基本概念,并对算法的时间复杂度和空间复杂度做了介绍;第2章到第5章,介绍了线性表、栈、队列、串等线性结构的逻辑特征,存储方法以及常用算法的实现和基本应用;第6章多维数组和广义表(第二版新增)介绍了它们的存储方法以及基本算法;第7章到第8章,介绍了树和图两种非线性数据结构的逻辑特征、存储方法以及相关算法的实现和基本应用;第9章查找,主要介绍了顺序查找、二分查找和二叉排序树的查找方法以及散列存储的基本方法;第10章排序,介绍了在计算机中广泛使用的各种排序方法,并对各种排序算法的优劣进行了分析和比较。各章内容相对独立,自成体系;各章后都有一个验证性实验和一个自主设计实验,有明确的实验目的和实验要求,供学生课内或课外上机实验使用。第11章为“数据结构实验系统开发”,全书就是以这个“数据结构实验系统”为主线来组织教材编写的,具有很强的实用性和可操作性,本章提出了系统设计的要求,文件的包含处理方法以及主控模块的设计。实际上它是一个数据结构的实训课题,让学生在完成各章子系统的前提下,再设计一个主控模块(即主菜单),来调用各章的子系统。通过实训,把各章子系统的实验,组装成一个完整的数据结构实验系统,进而再把自主设计的其他算法扩充到实验系统中去,通过菜单的选择可以方便地进行各章算法的实验和演示,也可以用它来检验相关习题的正确性。这样安排的作用是,让学生在学好数据结构基本算法的同时,逐步建立起系统设计的初步概念。

本书集教材、习题和实验于一体,让使用本书的学生和自修的读者,一册在手就能方便地进行数据结构课程的学习和实验训练。

本书初版由计春雷、曾宪文和沈学东策划,由陈元春、张亮、王勇编写,并由陈元春完成全书的统稿、修改和定稿工作。自2003年8月出版以来,到2007年6月已进行了7次印刷。

《实用数据结构基础(第二版)》由陈元春修订,新增了第6章多维数组和广义表的内容;重新调整和修改了各章的实验程序,新增了10个自主设计的实验;重新编写了各章单元练习,使题型和题量都有大幅度的增加;重新修改了与教材配套的电子课件。使全书的内容进一步充实,质量有了进一步的提高。

王淮亭审阅了《实用数据结构基础(第二版)》全书内容,并提出了许多宝贵的修改意见;陈默、费宏慧绘制了本书的大量图片,在此一并表示感谢!

另外,由陈元春、王淮亭等合编的《实用数据结构基础学习指导(第二版)》也由中国铁道出版社出版。该书与《实用数据结构基础(第二版)》密切配合,内容包括:各章要点分析;典型习题分析;各章单元练习解答;自主设计实验指导,以及与教学内容紧密配套的六套模拟试卷。

由于编者水平有限,书中疏漏或不妥之处在所难免,恳请广大专家和读者不吝赐教。

编 者

2007年6月