前言
数据结构是普通高等院校计算机和信息管理等专业的一门必修核心课程。它的主要任务是讨论从现实世界中抽象出来的数据的逻辑组织结构,在计算机中的存储结构,以及对其进行的各种处理运算的方法和算法。目的是使读者掌握如何利用计算机和程序设计语言对数据进行有效的组织、存储、转换和运算处理,为进一步学习后续数据库等课程和进行软件开发打下必要的知识基础。
数据的逻辑组织结构大致分为集合结构、线性结构、树(层次)结构和图(网格)结构4种。数据在计算机中的存储结构大致分为顺序结构、链接结构、索引结构和散列结构4种。对数据进行的各种运算主要有插入运算、删除运算、查找运算、排序运算、更新(修改)运算等。
介绍数据结构内容需要借助于一种计算机程序设计语言,在目前使用众多的程序设计语言中,Java程序设计语言是应用最广泛、面向对象程度化最高的语言,利用Java语言中的抽象类和接口能够准确地描述任一种数据结构的逻辑定义和运算,利用一种存储结构所定义的派生类能够有效地实现对数据的各种运算。总之,利用Java语言和面向对象的程序设计方法讲授数据结构知识既是目前的首要选择,也是最明智的选择。
本书共分为8章,分别为绪论、集合、线性表、栈和队列、树和二叉树、图、查找、排序。在绪论中介绍了数据结构的基本概念,算法的描述和评价等内容;在集合一章中介绍了集合的抽象数据类型,以及在顺序和链接存储结构下的操作实现;在线性表一章中,介绍了一般线性表和有序线性表的抽象数据类型,在顺序和链接存储结构下的操作实现,以及在多项式和稀疏矩阵计算中的应用;在栈和队列一章中,分别介绍了它们各自的特点、运算和实现方法,还介绍了栈与递归算法的关系,以及栈在算术表达式计算中的应用;在树和二叉树一章中,介绍了树和二叉数的定义和性质,二叉树的存储结构和遍历方法,以及二叉搜索树和堆的定义和运算;在图一章中,介绍了图的基本概念,图的3种存储结构,图的深度和广度优先遍历,图的生成树和最小生成树等内容;在查找一章中,主要介绍了顺序表查找、索引查找、散列查找、B树查找等内容;最后一章为排序,主要介绍了插入排序、选择排序、交换排序、归并排序和外排序等内容。
书中的所有算法都已通过上机调试和运行,尽量确保算法的正确性。每章内容后都配有丰富的练习题,包括选择题、填空题、算法分析题、算法设计题等,并且在书后的附录中还给出了部分算法设计题的参考解答,以便读者编程后参考。
学习本教材应具有Java语言程序设计的基础,教学时数应安排在80学时左右,其中讲授与上机实习的时数之比应为2∶1,有条件的学生要尽量多安排上机时间。
全书主要由本人编写,部分章节内容由袁薇和朱嵬编写,但由于作者水平有限,疏漏和不足之处在所难免,敬请授课教师和广大读者批评指正。
徐孝凯 2010年6月