本书系统地介绍了各种类型的数据结构和查找、排序的各种方法。对于每一种类型的数据结构,都详细阐述了基本概念、各种不同的存储结构和不同存储结构上一些主要操作的实现算法,并给出了许多设计实例帮助读者理解。另外,书中还介绍了递归算法的设计方法。面向对象方法是目前软件设计的主流方法,本书用面向对象思想组织全部材料。全书采用Java语言作为算法描述语言。\r\n 本书既可作为大专院校计算机等专业的教科书,也可作为从事计算机应用的工程技术人员的自学参考书。
第0章 Java语言基础\r\n0.1数据类型\r\n0.1.1基本数据类型\r\n0.1.2基本数据类型的包装类\r\n0.1.3数组\r\n0.1.4字符串\r\n0.2类和对象\r\n0.2.1类的定义\r\n0.2.2类和类成员的访问权限\r\n0.2.3static关键字和main函数\r\n0.2.4对象和对象引用\r\n0.2.5抽象类\r\n0.2.6最终类\r\n0.3继承\r\n0.3.1子类的定义方法\r\n0.3.2子类的构造函数\r\n0.3.3子类对父类成员函数的覆盖\r\n0.3.4接口\r\n0.4多态\r\n0.5异常处理\r\n0.5.1Java的异常处理\r\n0.5.2在同一个函数中抛出异常和处理异常\r\n0.5.3在不同的函数中抛出异常和处理异常\r\n0.6包\r\n0.6.1包的作用\r\n0.6.2包的定义和包的导入\r\n习题0\r\n第1章绪论\r\n1.1数据结构的基本概念 \r\n1.2抽象数据类型\r\n1.3算法和算法的时间复杂度\r\n1.3.1算法\r\n1.3.2算法设计目标\r\n1.3.3算法的时间复杂度分析\r\n1.4算法的空间复杂度分析\r\n1.5Java语言的工具包\r\n习题1\r\n第2章线性表\r\n2.1线性表\r\n2.1.1线性表的定义\r\n2.1.2线性表抽象数据类型\r\n2.2顺序表\r\n2.2.1顺序表的存储结构\r\n2.2.2顺序表类\r\n2.2.3顺序表的效率分析\r\n2.2.4顺序表类应用举例\r\n2.3单链表\r\n2.3.1单链表的结构\r\n2.3.2结点类\r\n2.3.3单链表类\r\n2.3.4单链表的效率分析\r\n2.3.5顺序表和单链表的比较\r\n2.3.6单链表应用举例\r\n2.4循环单链表\r\n2.5双向链表\r\n2.6仿真链表\r\n2.7面向对象的软件设计方法\r\n2.8设计举例\r\n2.8.1顺序表算法设计举例\r\n2.8.2单链表算法设计举例\r\n习题2\r\n第3章堆栈和队列\r\n3.1堆栈\r\n3.1.1堆栈的基本概念\r\n3.1.2堆栈的抽象数据类型\r\n3.1.3顺序堆栈\r\n3.1.4链式堆栈\r\n3.2堆栈的应用\r\n3.2.1括号匹配问题\r\n3.2.2表达式计算问题\r\n3.3队列\r\n3.3.1队列的基本概念\r\n3.3.2队列的抽象数据类型\r\n3.3.3顺序队列\r\n3.3.4顺序循环队列类\r\n3.3.5链式队列\r\n3.3.6队列的应用\r\n3.4优先级队列\r\n3.4.1顺序优先级队列类\r\n3.4.2优先级队列的应用\r\n习题3\r\n第4章串\r\n4.1串的基本概念及其抽象数据类型\r\n4.1.1串的基本概念\r\n4.1.2串的抽象数据类型\r\n4.2串的存储结构\r\n4.3串类\r\n4.3.1MyString类\r\n4.3.2MyString类的测试\r\n4.3.3MyStringBuffer类\r\n4.3.4MyStringBuffer类的测试\r\n4.4串的模式匹配算法\r\n4.4.1BruteForce算法\r\n4.4.2KMP算法\r\n4.4.3BruteForce算法和KMP算法的运行效率比较\r\n习题4\r\n第5章数组、集合和矩阵\r\n5.1数组\r\n5.1.1数组的定义\r\n5.1.2数组的实现机制\r\n5.1.3数组的抽象数据类型\r\n5.1.4Java语言支持的数组功能\r\n5.2向量类\r\n5.3集合\r\n5.3.1集合的概念\r\n5.3.2集合抽象数据类型\r\n5.3.3集合类\r\n5.4矩阵类\r\n5.5特殊矩阵\r\n5.5.1特殊矩阵的压缩存储\r\n5.5.2n阶对称矩阵类\r\n5.6稀疏矩阵\r\n5.6.1稀疏矩阵的压缩存储\r\n5.6.2数组结构的稀疏矩阵类\r\n5.6.3三元组链表\r\n习题5\r\n第6章递归算法\r\n6.1递归的概念\r\n6.2递归算法的执行过程\r\n6.3递归算法的设计方法\r\n6.4递归过程和运行时栈\r\n6.5递归算法的效率分析\r\n6.6递归算法到非递归算法的转换\r\n6.7设计举例\r\n6.7.1一般递归函数设计举例\r\n6.7.2回溯法及设计举例\r\n习题6\r\n第7章树和二叉树\r\n7.1树\r\n7.1.1树的定义\r\n7.1.2树的表示方法\r\n7.1.3树的抽象数据类型\r\n7.1.4树的存储结构\r\n7.2二叉树\r\n7.2.1二叉树的定义\r\n7.2.2二叉树的抽象数据类型\r\n7.2.3二叉树的性质\r\n7.2.4二叉树的存储结构\r\n7.3以结点类为基础的二叉树设计\r\n7.3.1二叉树的结点类\r\n7.3.2二叉树的遍历\r\n7.3.3二叉树遍历的应用\r\n7.3.4应用举例\r\n7.3.5非递归的二叉树遍历算法\r\n7.4二叉树类\r\n7.5二叉树的分步遍历\r\n7.5.1二叉树游标类\r\n7.5.2二叉树中序游标类\r\n7.5.3二叉树层序游标类\r\n7.6线索二叉树\r\n7.7哈夫曼树\r\n7.7.1哈夫曼树的基本概念\r\n7.7.2哈夫曼编码问题\r\n7.7.3哈夫曼编码的软件设计\r\n7.8树与二叉树的转换\r\n7.9树的遍历\r\n习题7\r\n第8章图\r\n8.1概述\r\n8.1.1图的基本概念\r\n8.1.2图的抽象数据类型\r\n8.2图的存储结构\r\n8.2.1图的邻接矩阵存储结构\r\n8.2.2图的邻接表存储结构\r\n8.3邻接矩阵图类\r\n8.4图的遍历\r\n8.4.1图的深度和广度优先遍历算法\r\n8.4.2图的深度和广度优先遍历成员函数的设计\r\n8.5最小生成树\r\n8.5.1最小生成树的基本概念\r\n8.5.2普里姆算法\r\n8.5.3克鲁斯卡尔算法\r\n8.6最短路径\r\n8.6.1最短路径的基本概念\r\n8.6.2从一个结点到其余各结点的最短路径\r\n8.6.3每对结点之间的最短路径\r\n习题8\r\n第9章排序\r\n9.1排序的基本概念\r\n9.2插入排序\r\n9.2.1直接插入排序\r\n9.2.2希尔排序\r\n9.3选择排序\r\n9.3.1直接选择排序\r\n9.3.2堆排序\r\n9.4交换排序\r\n9.4.1冒泡排序\r\n9.4.2快速排序\r\n9.5归并排序\r\n9.6基数排序\r\n9.7各种排序算法的性能比较\r\n习题9\r\n第10章查找\r\n10.1查找的基本概念\r\n10.2静态查找\r\n10.2.1在无序序列中查找\r\n10.2.2在有序序列中查找\r\n10.2.3索引\r\n10.3动态查找\r\n10.3.1二叉排序树\r\n10.3.2B_树\r\n习题10\r\n第11章哈希表\r\n11.1哈希表的基本概念\r\n11.1.1哈希表的基本构造方法\r\n11.1.2建立哈希表的关键问题\r\n11.2哈希函数构造方法\r\n11.3哈希冲突解决方法\r\n11.3.1开放定址法\r\n11.3.2链表法\r\n11.4哈希表类设计\r\n11.4.1哈希表项类\r\n11.4.2哈希表类\r\n11.4.3应用程序设计举例\r\n习题11\r\n附录AJava语言工具包实现的常用数据结构\r\n附录B上机实习内容规范和实习报告范例\r\nB.1上机实习内容规范\r\nB.2上机实习报告范例——约瑟夫环问题\r\n附录C部分习题解答\r\n参考文献
无封面