本书是国家级(网络教育)精品课程的教学成果,也是北京市高等教育精品教材,根据教育部高等学校大学计算机课程教学指导委员会《大学计算机基础课程教学基本要求》中有关理工类专业的计算机基础课程教学要求组织编写而成,内容由浅入深,案例丰富,通俗易懂,实用性强。
本书在介绍了C++语言的程序设计方法的基础上,采用面向对象的思想和抽象数据类型的概念,用C++语言有效地组织和描述了线性表、堆栈、队列、树和图等各种典型的数据结构和相关类的实现,并介绍了每一种数据结构的不同存储方法、典型操作及其应用。
全书共11章,包括数据结构的基本概念,数组与指针,函数,C++编程基础,继承和多态,模板和STL,线性表,堆栈与队列,树与二叉树,图,查找与散列结构,排序等。本书各章配有习题和实验训练题,方便实践教学,并为任课教师提供了电子课件和示例源代码。
本书可作为高等院校电子信息类以及其他相关专业本科生教材和教学参考书,也可供从事程序设计的工程人员参考使用。
扉页版权页前言目录第1章数据结构的基本概念1.1数据结构的概念和术语1.2抽象数据类型1.2.1数据类型1.2.2数据抽象与抽象数据类型1.3算法和算法分析1.3.1算法1.3.2算法设计的要求1.3.3算法效率的度量1.4面向对象概述1.4.1面向对象的思想1.4.2面向对象程序设计1.4.3面向对象的语言1.4.4面向对象的基本概念1.4.5面向对象的基本特性1.5本章小结习题1第2章C++初步知识2.1C++语言2.2数组2.2.1一维数组2.2.2二维数组2.2.3字符数组和字符串2.3指针2.3.1指针的概念2.3.2指针的定义2.3.3指针的运算2.4指针和数组2.4.1指针与数组名2.4.2指向数组的指针2.4.3存储指针的数组2.4.4动态存储2.5结构2.5.1结构类型的定义2.5.2结构变量的说明2.5.3结构成员的引用2.5.4结构数组和结构指针2.6函数2.6.1函数的声明、定义和调用2.6.2函数的参数传递2.6.3带默认参数的函数2.6.4内置函数2.6.5函数的重载2.7本章小结习题2实验训练题2第3章C++类及其对象的封装性3.1类的声明和对象的定义3.1.1声明类类型3.1.2定义对象的方法3.1.3对象成员的引用3.2类的成员函数3.2.1成员函数的访问属性3.2.2在类外定义成员函数3.2.3内置成员函数3.2.4成员函数的存储方式3.3构造函数和析构函数3.3.1对象的初始化3.3.2构造函数的作用3.3.3带参数的构造函数3.3.4构造函数的重载3.3.5拷贝构造函数3.3.6析构函数3.4相关特性3.4.1引用3.4.2友元3.4.3运算符重载3.5本章小结习题3实验训练题3第4章继承性和多态性4.1继承与派生的概念4.1.1派生类的声明与构成4.1.2派生类成员的访问4.2派生类的构造函数和析构函数4.2.1简单的派生类的构造函数4.2.2有子对象的派生类的构造函数4.2.3多级派生时的构造函数4.2.4派生类的析构函数4.3多继承4.3.1多继承的声明与使用4.3.2多继承引起的二义性问题4.3.3虚基类的概念与使用4.4多态性与虚函数4.4.1多态的概念4.4.2虚函数的定义与使用4.4.3虚析构函数4.4.4纯虚函数与抽象类4.5本章小结习题4实验训练题4第5章模板与标准模板库5.1模板5.1.1模板的概念5.1.2函数模板5.1.3类模板5.2标准模板库5.3序列式容器5.3.1vector容器5.3.2使用迭代器5.3.3list容器5.4关联式容器5.4.1pair类型5.4.2map容器5.4.3set容器5.5本章小结习题5实验训练题5第6章线性表6.1线性表的定义6.1.1线性表的逻辑结构6.1.2线性表的抽象类定义6.2线性表的顺序表示和实现6.2.1线性表的顺序表示6.2.2顺序表类的定义6.2.3顺序表类的实现6.3线性表的链式表示和实现6.3.1线性表的链式表示6.3.2抽象链表类的定义6.3.3抽象链表类各成员函数的实现6.4单链表6.4.1单链表的定义6.4.2单链表类的定义6.4.3单链表的常用成员函数的实现6.4.4单链表举例——一元多项式加法6.5循环链表6.5.1循环链表的定义6.5.2循环链表类的定义6.5.3循环链表常用函数的实现6.5.4循环链表举例——约瑟夫问题6.6双向链表6.6.1双向链表的定义6.6.2双向链表类的定义6.6.3双向链表的常用成员函数的实现6.7本章小结习题6实验训练题6第7章堆栈、队列和递归7.1堆栈的概念及其运算7.2抽象堆栈类的定义7.3堆栈的定义及其实现7.3.1顺序栈的定义7.3.2顺序栈类的定义及典型成员函数的实现7.3.3多栈共享空间问题7.3.4链栈的定义7.3.5链式栈类的定义及典型成员函数的实现7.4堆栈的应用举例7.4.1数制转换7.4.2迷宫问题7.5队列的概念及其运算7.6抽象队列类的定义7.7队列的定义及其实现7.7.1队列的顺序存储结构7.7.2循环队列的定义7.7.3顺序循环队列类的定义及常用成员函数的实现7.7.4链式队列的定义7.7.5链式队列类的定义及常用成员函数的实现7.7.6链式队列的应用举例7.7.7优先级队列的定义7.7.8优先级队列类的定义及常用成员函数的实现7.8递归7.8.1递归的概念7.8.2递归的应用7.8.3递归在计算机中的实现7.8.4递归问题的非递归算法7.9本章小结习题7实验训练题7第8章树与二叉树8.1树、二叉树和森林的基本概念8.1.1树8.1.2二叉树8.1.3树与森林的存储结构8.2二叉树的抽象类和树的类8.2.1二叉树的抽象类8.2.2树的类8.3二叉树的遍历和树的遍历8.3.1二叉树的遍历8.3.2树的遍历8.4二叉排序树8.5二叉树的计数8.6哈夫曼树及其应用8.6.1最优二叉树8.6.2哈夫曼编码8.7本章小结习题8实验训练题8第9章图9.1图的基本概念9.1.1图的定义9.1.2图的术语9.1.3图的基本操作9.1.4图的存储表示9.2图的抽象类9.2.1图的邻接矩阵类9.2.2图的邻接表类9.3图的遍历9.3.1深度优先搜索9.3.2广度优先搜索9.4图的连通性与最小生成树9.4.1无向图的连通分量和生成树9.4.2最小生成树9.4.3关节点和重连通分量9.5最短路径9.5.1图结点的可达性9.5.2从某个源点到其余各顶点的最短路径9.5.3每一对顶点之间的最短路径9.6活动网络9.6.1AOV网络9.6.2AOE网络9.7本章小结习题9实验训练题9第10章查找与散列结构10.1基本概念10.2静态查找表10.2.1顺序表的查找10.2.2有序表的查找10.2.3索引顺序表的查找10.3动态查找表10.4Hash表及其查找10.4.1Hash表10.4.2Hash函数的构造方法10.4.3处理冲突的方法10.4.4Hash表的查找及其分析10.5本章小结习题10实验训练题10第11章排序11.1排序的基本概念11.2插入排序11.2.1直接插入排序11.2.2其他插入排序11.2.3希尔排序11.3快速排序11.4选择排序11.4.1简单选择排序11.4.2锦标赛排序11.4.3堆排序11.5归并排序11.5.1归并11.5.2迭代的归并排序算法11.6基数排序11.6.1多关键字排序11.6.2链式基数排序11.7本章小结习题11实验训练题11参考文献
下载