“数据结构”是计算机科学与技术、软件工程及信息管理等专业的一门必修的核心课程。“数据结构”课程的任务是讨论在应用问题求解时数据的逻辑组织、在计算机中的存储实现以及相关操作的算法。“数据结构”课程的目的是使学生掌握在解决实际问题的过程中如何组织数据、存储数据和处理数据的基本方法,为进一步学习后续课程,以及为以后从事软件开发和应用打下坚实的基础。
本书是清华大学出版社出版的《数据结构(C语言描述)》的配套教材。它不但汇集了“数据结构”课程常用习题的解析,还对教学中反映出来的许多学生不易通过自学理解的概念和知识做了讲解,并针对学习“数据结构”课程给出了一些指导性的建议和考试的样例。特别是紧扣了全国硕士研究生计算机专业统考的考试大纲,对“数据结构”的主要知识点做了归纳,对358处疑难点做了点拨,按照考试大纲规定的题型,对843道习题做了解答和分析,最后给出了2009-2012年的计算机统考的真题和答案。实际上总题量超过1250题。
在编写本教材的过程中,作者对网上流传的1800题和严蔚敏编著的《数据结构》习题的解答做了研究,还参考了国内外众多习题集或课程辅导,去除一些过时的、重复的、不适当的习题或试题,从中梳理了对复习和准备考试的学生有一定参考价值的习题。希望这种努力能够帮助有志于学好这门课程的同学掌握课程的基本知识和基本解题的技能,并基于此,做深度的研究。
本书共分10章,覆盖了教育部高等学校计算机科学与技术教学指导委员会公布的《高等学校计算机科学与技术专业公共核心知识体系与课程》和教育部考试中心公布的《计算机专业联考考研大纲》中有关“数据结构”的几乎所有知识点。第1章是计算机概论,主要涉及算法设计和分析方面的习题。第2章是线性表,注重链表上的算法设计与实现方面的习题。第3章是栈和队列,重点在栈和队列的应用。第4章是数组、串和广义表,重点在串。第5章是树、森林和二叉树,重点在二叉树的遍历和树与二叉树的转换及其相关的习题。为了深入学习树与二叉树的应用,第6章讨论了二叉查找树、AVL树、Huffman树、堆和并查集。之所以把堆结构归入这一章,是因为在第7章要用到它。第7章是图,重点在图的遍历、连通性和最小生成树、最短路径、拓扑排序等;在这一章还引用了分治法、减治法、回溯法、贪心法、动态规划和分枝限界法等常用算法设计策略。第8章是查找,重点在折半查找和散列法。第9章是内排序,第10章是外排序,对各种排序算法的方法和特点有很多练习。
本书每个知识点分4个层次展开。第一是“知识点复习”,由于篇幅有限,这部分内容主要以梳理主教材的知识点为主;第二是“疑难点辨析”,是对知识点中容易被学生忽略的细节进行点拨;第三是“选择题解析”,对知识点从正面或反面进行练习,以加深对概念的理解;第四是“应用题选讲”,对知识点的综合应用进行多种手段的训练,包括作图或计算、算法设计与分析等。为了使学习者不至于一下陷入题海之中,对题号上加★的可以先跳过,待以后备考时再来看它。本书力求对各种可能的问题都给出一个解决的思路和预案,从而使学习者达到熟能生巧、处变不惊的境界。
本书是基于多年来的教学实践整理而成的,希望能对广大读者的学习起到促进作用。但由于时间仓促和作者的水平所限,错误和疏漏在所难免,敬请读者提出宝贵意见。
衷心希望与各位读者交流。
作者
2012年4月于清华园
