第一版前言
数据结构是计算机及相关专业的一门重要的专业基础课程。它不仅是计算机程序设计的理论基础,还是学习计算机操作系统、编译原理、数据库原理等课程的重要基础。
数据结构的主要任务是讨论数据的各种逻辑结构和数据在计算机中的存储表示,以及各种非数值运算的算法的实现。通过数据结构课程的学习,使学生能使用数据结构的基本分析方法来提高编写程序的能力和应用计算机解决实际问题的能力。
本书编写的定位是大学本科和高职、高专的计算机专业的学生,采用“以应用为目的,以够用为度”的原则,从实际应用的需要出发,大胆取舍,注重实用性。
从体系结构而言,本书以“数据结构实验演示系统”为主线来组织教材的编写。每一章的主要算法构成一个相对独立的子系统(即子模块),子系统既是各章教学的重点内容,也是上机实验的主要算法。各个子系统可以通过菜单的选择对本章的基本算法进行实验和演示,也可以用它来检验相关习题的正确性。而系统又是开放式的,对于学有余力的同学,可以将数据结构的其他算法扩充到整个实验演示系统中去。
从编写风格而言,本书力求做到简明扼要,条理清楚,并尽量避免抽象的理论论述和复杂的公式推导。本书集教学和实验指导于一体,使得使用本书的学生和自修的读者,一册在手就能方便地进行数据结构课程的学习和实验训练。如果读者在使用本书的过程中需习题答案及“数据结构实验演示系统”,可向中国铁道出版社计算机图书中心或任课老师索取。
本书内容共分10章,第1章绪论,介绍了数据结构与算法的基本概念,并对算法的时间复杂度和空间复杂度做了介绍;第2章到第5章,介绍了线性表、栈、队列、串等线性结构的逻辑特征,存储方法以及常用算法的实现和基本应用;第6章到第7章,介绍了树和图两种非线性数据结构的逻辑特征、存储方法以及相关算法的实现和基本应用;第8章,主要介绍了顺序查找、二分查找、分块查找和二叉排序树的查找方法以及散列存储的基本方法;第9章,介绍了在计算机中广泛使用的各种排序方法,并对各种排序算法的优劣进行了分析和比较。各章内容相对独立,自成体系;每章都有明确的实验目的和实验要求,供学生上机实验使用,在实验参考程序中给出了各章子系统的源代码。书中各章子系统的实验均给出了完整的源代码,并全部在VC++环境中上机运行通过。由于篇幅所限,本书大部分算法都是以单独的函数形式给出的,若读者要运行这些算法,还必须给出一些变量的说明及主函数来调用所给的函数。
本书的第10章为“系统的开发”,提出了系统设计的要求,文件包含处理方法及主控模块的设计。实际上它相当于数据结构的一个实训课题,让学生在完成各章子系统的前提下,再设计一个主控模块(即主菜单),来调用各个子系统。通过实训,使学生在原有各章子系统的基础上,组装成一个完整的数据结构实验系统,从而使学生在学好基本算法的基础上,逐步建立起系统的概念。
本书由计春雷副教授、曾宪文副教授和沈学东老师策划,本书第1章、第3章、第4章、第6章、第10章由陈元春执笔,第2章、第7章、第8章由张亮执笔,第5章、第9章由王勇执笔。实验和习题指导部分由陈元春和张亮合编,并由张亮调试了整个“数据结构实验演示系统”。最后由陈元春完成全书的统稿、修改和定稿工作。王淮亭副教授、刘新铭副教授和郑君华老师审阅了全书的内容,并提出了许多宝贵的修改意见,费宏慧老师绘制了本书的大量图片。另外,还有陈贤淑、陈晓娟、廖康良等参与了本书的编排工作,在此一并表示感谢!
由于编者水平有限,书中的疏漏或不妥之处在所难免,恳请广大专家和读者不吝赐教。同时,我们也会在适当的时间对本书的内容进行修订和补充,并发布在天勤网站(http://www.tqbooks.net)的“图书修订”栏目中。
编 者
2003年8月