数据结构(AR版)

本书特色

[

本书共8章,内容包括绪论、线性表、栈和队列、数组、树、图、查找和排序等。书中给出了数据结构的增强现实案例。本书内容丰富、条理清晰,讲解摄入浅出,特色鲜明,实用性强,适合高等院校计算机和相关专业的本科生及研究生使用。

]

内容简介

[

(1)本书利用增强现实AR技术构建虚实交互的数据结构学习环境,更好地激发学生的兴趣和积极性,为数据结构教学提供更多信息技术手段,有助于进一步提高教学质量。
(2)本书强调理论教学和实践应用能力的提高,对于基础理论知识的阐述由浅入深、通俗易懂。书中对每个算法分析,均尽量做到图文并茂、条理清晰、循序渐进,力求使读者更容易理解和掌握。
(3)本书与《基于MFC的可视化数据结构》相互配套,针对每个算法,作者均基于Visual C 2015程序设计语言给予完整实现,读者根据这些完整的代码,可以方便地实现相应的可视化展示。

]

作者简介

[

连远锋 中国石油大学(北京)计算机系副教授,主要研究方向为机器视觉和算法设计。主要为本科生教授数据结构(15年以上)和数值分析课程,为研究生讲授机器视觉、人工神经网络等课程。

]

目录

第1章绪论/11.1数据结构的重要性11.2数据结构基本术语21.3数据的逻辑结构41.4数据的存储结构51.5算法的基本概念51.6算法分析与度量61.6.1算法的评价标准61.6.2算法效率的度量71.7总结与提高131.8习题一13第2章线性结构/162.1线性表及逻辑结构162.2线性表的顺序存储182.2.1顺序存储182.2.2顺序表的存储结构描述192.2.3顺序结构上的运算192.3线性表的链式存储262.3.1线性链表262.3.2线性链表的存储结构描述272.3.3线性链表的基本运算282.3.4线性链表操作的性能分析352.4顺序表与链表的比较352.5循环链表362.6双向链表372.7应用举例422.7.1顺序表的应用: 大整数求和422.7.2单链表的应用: 一元多项式加法运算44〖1〗数据结构(AR版)目录〖3〗〖3〗2.8总结与提高482.9习题二49第3章栈和队列/513.1栈513.1.1栈的定义513.1.2栈的顺序存储结构523.1.3栈的链式存储结构573.1.4栈的特性分析633.2队列653.2.1队列的定义653.2.2循环队列663.2.3链式队列703.2.4双端队列743.3栈和队列的应用763.3.1括号匹配763.3.2表达式求解783.3.3队列在层次遍历中的应用863.4递归873.4.1递归的概念873.4.2递归算法的设计893.4.3转化递归算法为非递归算法913.5总结与提高953.6习题三95第4章数组和字符串/984.1数组的定义984.2数组的顺序存储结构994.2.1一维数组的顺序存储1004.2.2多维数组的顺序存储1004.3矩阵的压缩存储1044.3.1特殊矩阵的压缩存储1054.3.2三对角矩阵的压缩存储1064.3.3稀疏矩阵的压缩存储1074.4稀疏矩阵的运算1164.4.1稀疏矩阵的转置1164.4.2稀疏矩阵的乘法1194.5字符串1244.5.1串的基本概念1244.5.2串的存储结构1244.5.3串的模式匹配算法1264.6总结与提高1334.7习题四133第5章树/1365.1树的定义及基本术语1365.2N叉树1385.2.1N叉树的概念1385.2.2N叉树的性质1395.3二叉树1405.3.1二叉树的定义及性质1405.3.2二叉树的基本操作1425.4二叉树的存储结构1435.4.1顺序存储结构1435.4.2链式存储结构1435.5二叉树的操作1465.5.1二叉树的递归遍历1465.5.2二叉树构造函数1495.5.3二叉树析构函数1505.5.4递归遍历算法的应用举例1505.5.5由遍历序列恢复二叉树1535.5.6二叉树遍历的非递归算法1545.6线索二叉树1585.6.1线索二叉树的定义1585.6.2中序线索二叉树的建立和遍历1605.6.3中序线索二叉树插入1665.6.4中序线索二叉树删除1705.6.5前序与后序线索二叉树1745.6.6线索二叉树算法的应用举例1745.7二叉排序树1765.7.1二叉排序树的基本概念1765.7.2二叉排序树的插入1785.7.3二叉排序树的删除1805.7.4二叉排序树查找分析1845.7.5二叉排序树算法的应用举例1875.8平衡二叉树1885.8.1平衡二叉树基本概念1885.8.2平衡化旋转1885.8.3平衡二叉树的插入1915.8.4平衡二叉树的删除1945.8.5平衡二叉树算法的应用举例1985.9树、森林与二叉树的关系2075.9.1树的存储结构2075.9.2森林与二叉树的转换2115.9.3树与森林的遍历2135.10Huffman树及其应用2155.10.1带权路径长度的概念2155.10.2Huffman树的构造2165.10.3Huffman树结构定义及算法实现2185.10.4Huffman编码2195.11总结与提高2225.12习题五223第6章图/2276.1图的基本概念2276.1.1图的基本概念与术语2276.1.2图的基本操作2306.2图的存储结构2326.2.1邻接矩阵2326.2.2邻接表2366.2.3有向图的十字链表表示2406.2.4无向图的邻接多重表表示2456.3图的遍历2486.3.1深度优先搜索2496.3.2广度优先搜索2516.4生成树2546.4.1MST性质2546.4.2Kruskal算法2556.4.3Prim算法2616.5路径规划2646.5.1*短路径2656.5.2Dijkstra算法2656.5.3Floyd算法2696.6拓扑排序2726.7关键路径2786.8总结与提高2886.9习题六288第7章查找/2927.1基本概念2927.2线性表查找2937.2.1顺序查找2937.2.2线性链表上的顺序查找2957.3折半查找法2967.3.1一般的折半查找法2967.3.2次优查找树: 折半查找的改进方法2997.4索引查找3057.4.1索引顺序表与分块查找3057.4.2多级索引结构与m叉查找树3077.4.3B树的概念3087.4.4B树上的查找3107.4.5B树上的插入3127.4.6B树上的删除3167.4.7B树析构函数3227.4.8B树层序遍历输出3227.4.9B树操作应用举例3247.4.10B 树3247.5散列表及其查找3257.5.1散列的概念3267.5.2散列函数设计3267.5.3处理冲突的方法3297.5.4散列表查找性能分析3417.6总结与提高3427.7习题七343第8章排序/3458.1基本概念3458.2插入排序3468.2.1直接插入排序3478.2.2折半插入排序3498.2.3希尔排序3508.3交换排序3528.3.1冒泡排序3528.3.2快速排序3548.4选择排序3598.4.1简单选择排序3608.4.2堆排序3618.5归并排序3668.5.1二路归并3668.5.2二路归并递归排序算法3688.6分配排序3698.6.1桶排序3698.6.2基数排序3708.6.3关键字分解3708.6.4链式基数排序3718.7内部排序算法比较3788.7.1排序方法的下界3788.7.2各种内排序方法的比较3798.8总结与提高3828.9习题八382参考文献/384第1章面向对象程序设计概述/11.1面向过程程序设计11.2面向对象程序设计51.2.1面向对象程序设计的思想51.2.2面向对象的基本概念61.2.3面向对象程序设计的优点91.3面向对象的软件开发101.4图书馆图书借阅管理系统的面向对象分析与设计121.4.1面向对象分析121.4.2面向对象设计15本章小结16习题17第2章面向过程程序设计概述/182.1从C语言到C 182.2简单C 程序192.3C 对C语言的扩充252.3.1C 的输入输出252.3.2C 对C语言数据类型的扩展262.3.3常变量262.3.4指针282.3.5引用382.3.6函数442.3.7名字空间532.3.8字符串变量562.3.9复数变量602.4C 程序的编写和实现63本章小结64习题64第3章类与对象/663.1类的声明和对象的定义663.1.1类和对象的概念及其关系663.1.2类的声明673.1.3对象的定义683.2类的成员函数703.2.1成员函数的性质703.2.2在类外定义成员函数703.2.3inline成员函数713.2.4成员函数的存储方式723.3对象成员的访问743.3.1通过对象名和成员运算符来访问对象的成员743.3.2通过指向对象的指针来访问对象的成员743.3.3通过对象的引用来访问对象的成员753.4构造函数与析构函数763.4.1构造函数763.4.2析构函数803.4.3构造函数和析构函数的调用次序813.5对象数组853.6对象指针883.6.1指向对象的指针883.6.2指向对象成员的指针883.6.3this指针903.7对象与const923.7.1常对象923.7.2常对象成员933.7.3指向对象的常指针943.7.4指向常对象的指针943.7.5对象的常引用963.8对象的动态创建与释放973.9对象的赋值与复制983.9.1对象的赋值983.9.2对象的复制1023.9.3对象的赋值与复制的比较1053.10向函数传递对象1053.11图书馆图书借阅管理系统中类的声明和对象的定义108本章小结115习题115第4章继承与派生/1184.1继承与派生的概念1184.2派生类的声明1194.3派生类的构成1204.4派生类中基类成员的访问属性1214.4.1公用继承1214.4.2私有继承1234.4.3保护成员和保护继承1254.4.4成员同名问题1274.5派生类的构造函数和析构函数1294.5.1派生类构造函数1294.5.2派生类析构函数1324.6多重继承1344.6.1声明多重继承的方法1344.6.2多重继承派生类的构造函数与析构函数1344.6.3多重继承引起的二义性问题1374.6.4虚基类1394.7基类与派生类对象的关系1434.8聚合与组合1464.9图书馆图书借阅管理系统中继承与聚合的应用148本章小结165习题166第5章多态性与虚函数/1685.1什么是多态性1685.2向上类型转换1695.3功能早绑定和晚绑定1715.4实现功能晚绑定——虚函数1715.4.1虚函数的定义和作用1725.4.2虚析构函数1755.4.3虚函数与重载函数的比较1775.5纯虚函数和抽象类1775.6图书馆图书借阅管理系统中的多态性180本章小结187习题188第6章友元与静态成员/1896.1封装的破坏——友元1896.1.1友元函数1896.1.2友元类1946.2对象机制的破坏——静态成员1956.2.1静态数据成员1966.2.2静态成员函数1986.3图书馆图书借阅管理系统中友元与静态成员的应用201本章小结202习题202第7章运算符重载/2057.1为什么要进行运算符重载2057.2运算符重载的方法2077.3重载运算符的规则2087.4运算符重载函数作为类的成员函数和友元函数2107.4.1运算符重载函数作为类的成员函数2107.4.2运算符重载函数作为类的友元函数2147.5几种常用运算符的重载2177.5.1单目运算符“ ”和“–”的重载2177.5.2赋值运算符“=”的重载2217.5.3流插入运算符“>”的重载2237.6不同类型数据间的转换2277.6.1系统预定义类型间的转换2277.6.2转换构造函数2287.6.3类型转换函数2317.7图书馆图书借阅管理系统中的运算符重载233本章小结238习题239第8章泛型编程/2408.1函数模板2408.1.1函数模板的定义2418.1.2函数模板的实例化2438.1.3模板参数2448.1.4函数模板重载2488.2类模板2518.2.1类模板的定义2528.2.2类模板的实例化2538.2.3类模板参数2568.3STL简介2598.3.1容器 2598.3.2迭代器2698.3.3算法2718.3.4函数对象2738.4图书馆图书借阅管理系统中的泛型编程276本章小结282习题282第9章输入输出/2859.1C 的输入输出概述2859.1.1C 的输入输出2859.1.2C 的输入输出流2869.2C 的标准输入输出流2889.2.1C 的标准输出流2889.2.2C 的标准输入流2919.3输入输出运算符2979.3.1输入运算符2979.3.2输出运算符2989.3.3输入与输出运算符的重载2989.4C 格式输入输出2999.4.1用流对象的成员函数控制输入输出格式2999.4.2用控制符控制输入输出格式3029.5文件操作与文件流3049.5.1文件的概念3049.5.2文件流类及文件流对象3049.5.3文件的打开与关闭3059.5.4对文本文件的操作3069.5.5对二进制文件的操作3089.6图书馆图书借阅管理系统中的文件操作312本章小结313习题313第10章异常处理/31510.1C 异常处理概述31510.2C 异常处理的实现31610.3异常与函数32210.3.1在函数中处理异常32210.3.2在函数调用中完成异常处理32310.3.3限制函数异常32410.4异常与类32410.4.1构造函数、析构函数与异常处理32410.4.2异常类32710.5图书馆图书借阅管理系统中的异常处理330本章小结332习题333第11章图形界面设计/33411.1基于对话框的图形界面C 程序设计33411.2基于单文档的图形界面C 程序设计34511.3图书馆图书借阅管理系统的图形界面设计364本章小结 364习题365参考文献/366第1章C语言程序设计概述/11.1程序设计语言11.1.1“存储程序”原理11.1.2程序设计语言的发展31.1.3语言处理程序41.2C语言的发展和特点51.3C语言的语法单位61.3.1C语言的基本符号61.3.2关键字61.3.3标识符61.3.4C语言语句81.4C语言程序的基本结构81.4.1简单的C语言程序介绍81.4.2C程序的结构与书写规则111.5程序设计与算法131.5.1程序设计131.5.2算法概述141.5.3算法的描述151.5.4结构化程序设计方法191.6C语言程序的上机调试201.6.1C语言的编译环境与运行程序的步骤201.6.2Turbo C开发环境211.6.3Win�睺C系统上机操作方法261.6.4Visual C 6.0系统上机操作方法28本章小结34习题34上机实训36实训项目: C语言开发环境的使用与程序调试 37第2章数据类型、运算符与表达式/392.1C语言数据类型与数据的存储39〖1〗C语言程序设计实用教程目录〖3〗〖3〗2.1.1C语言的数据类型392.1.2数据在内存中的存储形式412.2变量与常量432.2.1常量432.2.2变量472.3C语言的运算符和表达式532.3.1概述532.3.2算术运算符和算术表达式552.3.3关系运算符和关系表达式572.3.4逻辑运算符和逻辑表达式582.3.5赋值运算符和赋值表达式602.3.6条件运算符和条件表达式612.4不同类型数据间的混合运算632.5位运算642.5.1位逻辑运算642.5.2位移运算652.5.3位运算赋值运算符652.6常用数学库函数的使用66本章小结67习题68上机实训70第3章顺序结构程序设计/723.1C语言简单语句723.2数据的输入与输出733.3格式化输入与输出753.3.1格式化输出函数printf()753.3.2格式化输入函数scanf()803.4字符数据的输入与输出843.4.1字符输出函数putchar()843.4.2字符输入函数getchar()853.5顺序结构程序设计举例87本章小结90习题90上机实训93第4章选择结构程序设计/954.1if语句954.1.1单分支if语句954.1.2双分支if语句964.1.3if语句的嵌套974.2switch语句1004.3选择结构程序设计举例102本章小结106习题107上机实训110第5章循环结构程序设计/1125.1循环的概念1125.2for语句1135.3while语句1175.4do…while语句1195.5break与continue语句1215.5.1break语句1215.5.2continue语句1235.6循环的嵌套1245.7程序举例126本章小结128习题128上机实训134第6章数组/1366.1概述1366.2一维数组1376.2.1一维数组的定义1376.2.2一维数组的引用1386.2.3一维数组的初始化1396.2.4应用举例1416.3二维数组1456.3.1二维数组的定义1456.3.2二维数组的引用1476.3.3二维数组的初始化1476.3.4二维数组的应用举例1486.4字符数组与字符串1506.4.1字符数组1506.4.2字符串1526.4.3字符串处理函数153本章小结156习题157上机实训160第7章函数/1627.1函数的定义与调用1627.1.1函数的分类1627.1.2函数定义的一般形式1647.1.3函数的调用1677.1.4函数的参数传递1687.2函数的嵌套调用与递归调用1727.2.1函数的嵌套调用1727.2.2函数的递归调用1737.3变量的作用域和存储类别1757.3.1变量的作用域1757.3.2变量的存储类别1777.4内部函数与外部函数1787.4.1内部函数1797.4.2外部函数1797.5程序的多文件结构1807.6程序举例185本章小结189习题189上机实训192第8章编译预处理/1948.1宏定义命令1948.2文件包含2008.3条件编译203本章小结205习题205上机实训209第9章指针/2109.1地址与指针类型2109.1.1地址及取地址运算2109.1.2指针类型与指针运算2119.2指针变量2139.2.1指针变量的定义2139.2.2指针变量的运算2149.3指针与数组2179.3.1指向数组元素的指针2179.3.2用指针法引用数组元素2189.3.3多维数组与指针2209.4指针与字符串2249.5指针与函数2279.5.1指针变量作函数的参数2279.5.2指向函数的指针变量2329.5.3指针型函数2359.6指针型数组2379.7多级指针240本章小结241习题242上机实训245第10章结构体、共用体和枚举类型/24710.1结构体类型24710.1.1结构体类型的定义24710.1.2结构体变量的说明与引用24910.1.3位段25310.2结构体数组25510.2.1结构体数组的定义与初始化25510.2.2应用举例25710.3结构体与指针25910.3.1结构体类型的指针变量25910.3.2指向结构体数组的指针26110.3.3结构体类型变量作函数的参数26210.4动态数据结构与链表26410.4.1链表的相关概念26410.4.2动态内存分配函数26510.4.3链表的建立与操作26710.5共用体27210.5.1共用体类型的定义与变量说明27210.5.2共用体变量的引用27310.6枚举类型27510.7用typedef说明一种新类型名277本章小结280习题280上机实训283第11章文件操作/28511.1C语言文件概述28511.2文件的打开与关闭28811.3文件的读写29111.3.1字符的输入和输出29111.3.2格式化输入和输出29411.3.3字符串的输入和输出29811.4随机文件的读写30111.4.1文件的定位30111.4.2fread函数与fwrite函数30211.5出错检测函数30511.5.1ferror()函数30511.5.2clearerror()函数305本章小结306习题307上机实训311第12章课程设计/31312.1课程设计的目的31312.2课程设计的选题与实施过程31412.2.1选题31412.2.2实施过程31412.3课程设计报告的内容31512.4课程设计参考题目315本章小结321综合项目实训321附录AC常用库函数/325附录B全国计算机等级考试二级C语言考试大纲/333附录C计算机二级C语言考试模拟题/336模拟题参考答案350附录D习题参考答案/351第1章习题解答351第2章习题解答353第3章习题解答354第4章习题解答356第5章习题解答359第6章习题解答364第7章习题解答367第8章习题解答371第9章习题解答372第10章习题解答375第11章习题解答378参考文献/382

封面

数据结构(AR版)

书名:数据结构(AR版)

作者:连远锋

页数:383

定价:¥59.0

出版社:清华大学出版社

出版日期:2019-10-01

ISBN:9787302535249

PDF电子书大小:147MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注