数据结构是计算机科学与技术等电气信息类专业的核心主干基础课程,也是计算机科学与技术等相关专业考研的必考科目。
数据结构一般开设在大学二年级,其目的是对前期学习的计算机技术进行总结与提高,为后续其他专业课程的学习提供基础。“数据结构”上承
“计算机导论”、“程序设计语言”和“离散数学”; 下启“算法分析与设计”,同时它又是“操作系统”、“软件工程”、“数据库原理”、“编译原理”、“计算机图形学”和“人工智能”等专业课程的必修先行课。此外,许多计算机应用软件都要运用“数据结构”课程中讲授的知识来编写程序,进行科学计算和模拟试验。
学习数据结构的过程,既是一个复杂程序设计的训练过程,也是一个构造优化算法的训练过程,其技能培养的重要程度与知识传授等同。数据结构的教学内容、重点和难点在于让学生理解和掌握算法的设计与分析,使学生通过该课程的学习具有较好的数据抽象能力、算法设计能力以及创新思维能力。
对于计算机专业学生,目前许多高校都将“Java程序设计语言”这门课程当做第一门程序设计语言课程进行开设,这就需要在人才培养方案中能有贯穿于整个过程的对Java编程能力进行培养的课程安排。所以,如果数据结构能用Java语言进行描述,一则有利于提升数据结构的学习效果,二则能巩固Java语言方面的知识。而且相对于面向过程的程序设计语言,用面向对象的程序设计语言描述数据结构更为自然。Java是相对较新同时也是当前使用极为广泛的面向对象的程序设计语言,与C++相比,Java是一种更安全、更具可移植性并且更容易使用的语言。因此,这使得它成为目前讨论和实现数据结构的一种优秀的可选语言。
下面是本教材的一些特色:
(1) 精练内容、强化基础、突出知识的应用性。针对一般本科院校学生的实际情况,把握“适用”与“够用”的尺度。做到把重点放在基础知识的介绍上,缩减了一些难度较大的内容。并强调知识在实际问题中的应用性,充分体现了理论与应用背景的紧密结合;
(2) 理论叙述简洁明了,重点突出,应用实例丰富完整并做到内容由浅入深,循序渐进。各章节都从基本概念为入手,逐步介绍其特点和基本操作的实现,然后通过应用实例来讲述如何运用所学的原理和方法来解决实际问题,章后附有小结和习题,便于学习总结和提高。这些内容做到“环环相扣,层层推进”,充分体现解析法的精髓,达到通俗易懂、由浅入深的效果,培养读者迁移知识的能力;
(3) 算法的描述既严谨,又充分利用Java的泛型方法来体现方法的通用性,支持高效的代码重用;
(4) 书中融入了新的教学理念,并配有大量的图表,便于学生直观地理解数据结构与算法;
(5) 教学、实验相互配合,内容全面,实现立体化教学资源建设。与教材一同配有PPT电子教案、习题解答以及“数据结构”精品课程网站。与本书配套的《数据结构实例解析与实验指导》也即将完成,书中将结合数据结构课程中的重要知识点提供丰富的典型应用实例,进一步强化理论知识应用于解决实际问题能力的培养。
本教材主要面向普通高等院校本、专科学生,因此在紧扣考研大纲的前提下尽量剔除了一些难度较大的内容。教材的内容共分8章,各章内容介绍如下。
第1章“绪论”,主要介绍了数据结构课程讨论的内容,数据结构的常用术语及基本概念,数据结构算法的描述和算法分析方法以及本书中所应用到的Java泛型方法等内容。
第2章“线性表”,主要介绍了线性表的抽象数据类型定义,线性表类型在顺序存储和链式存储两种存储结构下的实现方法以及线性表的应用等内容。
第3章“栈与队列”,主要介绍了栈与队列的抽象数据类型定义,栈与队列在顺序存储和链式存储结构下其基本操作的实现方法以及栈与队列的应用等内容。
第4章“串与数组”,主要介绍了串的基本概念,串的存储结构,串的基本操作实现,数组的定义、操作和存储结构以及矩阵的压缩存储等内容。
第5章“树与二叉树”,主要介绍了树与二叉树的基本概念和存储结构,树、二叉树和森林的遍历,树、二叉树与森林之间的转换方法以及哈夫曼树与哈夫曼编码等内容。
第6章“图”,主要介绍了图的基本概念,图的邻接矩阵和邻接表两种最基本的存储结构; 图的广度优先搜索和深度优先搜索两种最基本的遍历方法,有关最小生成树的克鲁斯卡尔(Kruskal)和普里姆(Prim)两种实现算法,拓扑排序和求最短路径、关键路径等内容。
第7章“排序”,主要介绍了排序的基本概念,常用内部排序(插入排序、交换排序、选择排序、归并排序和基数排序)方法的实现、性能分析以及各种内部排序方法的比较等内容。
第8章“查找”,主要介绍了查找的基本概念,静态查找表(顺序查找、二分查找和分块查找)、动态查找表(二叉排序树、平衡二叉树、B树和红黑树)、哈希查找表的实现方法及性能分析等内容
第1~3章及第5章由刘小晶副教授执笔,第4、第7~8章由杜选副教授执笔,第6章由杜卫锋博士执笔,书中的代码由邹益民博士负责设计和调试。刘小晶提出了本书的编写大纲及负责完成了本书的统稿工作,由朱蓉博士、副教授负责审阅了全稿,并提出了许多宝贵的修改意见。
本书在编写过程中,参阅了大量的参考资料,列于书目的参考文献中,在此谨向作者表达衷心的感谢。
由于作者学识所限,书中定有不足之处,敬请读者批评指正,提出宝贵意见,联系方式: liuxiaojing99999@163.com。
编者
2010年9月