数据结构和算法 python和c++语言描述_数据结构和算法 Python和C++语言描述

本书使用Python和C++两种编程语言来介绍数据结构。Python的面向对象特性, 让它成为一种很好适合用来学习数据结构课程的语言。C++的语法比Python更复杂,但是在学习了Python并掌握了基本的编程概念之后,学习C++的语法变得更为容易。本书首先介绍了抽象与算法分析、数据的抽象等数据结构的基本原理和知识, 然后结合Python的特点介绍了容器类、链式结构和迭代器、堆栈和队列、递归、树;随后,简单介绍了C++语言的知识,并进一步讲解了C++类、C++的动态内存、C++的链式结构、C++模板、堆、平衡树和散列表、图等内容;很后对算法技术进行了总结。每章末尾给出了一些练习题和编程练习,帮助读者复习巩固所学的知识。本书适合作为高等院校计算机相关专业数据结构课程的教材和参考书,也适合对数据结构感兴趣的读者学习参考。随书附赠源代码,可在异步社区轻松下载。

本书使用Python 和C++两种编程语言来介绍数据结构。全书内容共15 章。书中首先介绍了抽象与分析、数据的抽象等数据结构的基本原理和知识,然后结合Python 的特点介绍了容器类、链式结构和迭代器、堆栈和队列、递归、树;随后,简单介绍了C++语言的知识,并进一步讲解了C++类、C++的动态内存、C++的链式结构、C++模板、堆、平衡树和散列表、图等内容;很后对算法技术进行了总结。每章很后给出了一些练习题和编程练习,帮助读者复习巩固所学的知识。本书适合作为高等院校计算机相关专业数据结构课程的教材和参考书,也适合对数据结构知识感兴趣的读者学习参考。

戴维·M. 瑞德(David M. Reed) 美国Capital大学计算机科学系教授,负责教授Python和C++ 编程。他拥有俄亥俄州立大学计算机博士学位。约翰·策勒(John Zelle)美国Wartburg 大学数学和计算机系教授。他负责教授Python 程序设计课程,是《Python程序设计(第3版)》一书的作者。

目 录第  1 章 抽象与分析  11.1  概要  11.1.1  大型编程.  11.1.2  前方的道路  21.2  功能的抽象  31.2.1  契约式设计  31.2.2  验证先验条件  61.2.3  自上而下的设计.  91.2.4  记录副作用.  111.3  算法分析.  121.3.1  线性搜索  121.3.2  二分搜索  141.3.3  非正式的算法比较.  151.3.4  算法的正式分析  171.3.5  大O 符号与Θ 符号  211.4  小结  231.5  练习  23第  2 章 数据的抽象.  272.1  概要  272.2  抽象数据类型  272.2.1  从数据类型到抽象数据类型.  282.2.2  定义抽象数据类型.  282.2.3  实现抽象数据类型.  302.3  抽象数据类型和对象  322.3.1  规范.  322.3.2  实现.  342.3.3  改变存储方式  352.3.4  面向对象的设计和编程.  362.4  抽象数据类型的实例:数据集(Dataset)  382.4.1  面向对象设计的过程  382.4.2  定义一个抽象数据类型.  392.4.3  实现这个抽象数据类型.  412.5  抽象数据类型的实例:有理数(Rational)  .422.5.1  运算符重载.422.5.2  有理数(Rational)类442.6  增量开发以及单元测试452.7  小结482.8  练习48第3  章 容器类523.1  概要523.2  Python 的列表523.3  顺序集合:扑克牌牌组533.4  有序集合:手牌.563.4.1  创建桥牌的手牌563.4.2  比较扑克牌.583.4.3  扑克牌排序.593.5  Python 里列表的实现613.5.1  基于数组的列表613.5.2  效率分析623.6  Python 的字典(选读) .633.6.1  字典抽象数据类型633.6.2  熟悉Python 字典.643.6.3  字典的实现.653.6.4  扩展示例:马尔可夫链673.7  小结703.8  练习71第4  章 链式结构和迭代器.754.1  概要754.2  Python 的内存模型75传递参数804.3  链表实现.814.4  链表抽象数据类型的实现.854.5  迭代器954.5.1  Python 的迭代器954.5.2  在链表(LList)里添加迭代器.964.5.3  通过Python 的生成器来迭代  974.6  基于游标的列表API(选读) .  994.6.1  游标(Cursor)的API  994.6.2  Python 的游标列表(CursorList)  1004.6.3  链式结构的游标列表(CursorList)  1024.7  链表vs 数组  1044.8  小结.  1044.9  练习.  105第5  章 堆栈和队列  1095.1  概要.  1095.2  堆栈.  1095.2.1  堆栈抽象数据类型  1095.2.2  堆栈的简单应用  1105.2.3  堆栈的实现  1125.2.4  应用程序:处理算术方程.  1135.2.5  应用程序:语法的处理(选读)  .  1165.3  队列.  1195.3.1  队列抽象数据类型  1195.3.2  队列的简单应用  1205.4  队列的实现.  1215.5  应用程序示例:队列的模拟(选读)  .  1235.6  小结.  1285.7  练习.  128第6  章 递归  1336.1  概要.  1336.2  递归定义  1346.3  简单的递归示例  1366.3.1  示例:字符串反转  1366.3.2  示例:字谜  1376.3.3  示例:快速计算指数.  1386.3.4  示例:二分搜索  1396.4  递归的分析.  1406.5  排序.1426.5.1  递归设计:归并排序1426.5.2  分析归并排序.1446.6  一个“难”题:汉诺塔1466.7  小结.1496.8  练习.150第7  章 树1567.1  概要.1567.2  树的术语1567.3  示例应用程序:表达式树1587.4  树的存储方式1597.5  应用:二叉搜索树.1607.5.1  二分查找属性.1607.5.2  实现一个二叉搜索树1617.5.3  遍历整个二叉搜索树(BST)  1667.5.4  二叉搜索树(BST)的运行时分析1687.6  使用二叉搜索树(BST)来实现映射(选读)1697.7  小结.1717.8  练习.172第8  章 为Python 程序员准备的C++简介.1778.1  概要.1778.2  C++的历史和背景1788.3  注释、代码块、变量名和关键字.1828.4  数据类型和变量声明1838.5  Include 语句、命名空间以及输入/输出1868.6  编译.1898.7  表达式和运算符优先级1918.8  条件语句1938.9  数据类型转换1968.10  循环语句1978.11  数组1998.11.1  一维数组1998.11.2  多维数组2018.11.3  字符数组.  2018.12  函数的细节  2028.12.1  声明、定义以及原型.  2028.12.2  值传递  2058.12.3  引用传递.  2058.12.4  将数组作为参数传递.  2068.12.5  常量参数  2088.12.6  默认参数.  2088.13  头文件和内联函数  2098.14  断言与测试  2138.15  变量的作用域以及生命周期.  2148.16  Python 程序员编写C++程序时的常见错误.  2158.17  其他的C++相关话题(选读)  2168.17.1  C++的Switch 语句.  2168.17.2  创建C++的命名空间.  2188.17.3  全局变量.  2198.18  小结  2208.19  练习  220第9  章 C++类.  2249.1  基本的语法和语义.  2249.2  字符串  2329.3  文件输入和输出  2349.4  运算符重载.  2369.5  类变量和方法  2429.6  小结.  2469.7  练习.  246第  10 章 C++的动态内存.  25010.1  概要  25010.2  C++的指针  25410.3  动态数组  25910.4  动态内存类  26310.4.1  析构函数.  26310.4.2  复制构造函数  26510.4.3  赋值运算符  26810.4.4  完整的动态数组类  27010.4.5  引用返回类型  27510.5  动态内存错误.  27610.5.1  内存泄漏.27610.5.2  访问无效内存27710.5.3  内存错误总结28010.6  小结28110.7  练习281第  11 章 C++的链式结构28511.1  概要28511.2  C++链式结构的类28611.3  C++链表.28811.4  C++链接的动态内存错误.29811.5  小结29911.6  练习300第  12 章 C++模板.30212.1  概要30212.2  模板方法30312.3  模板类.30512.3.1  标准模板库的vector  类30512.3.2  用户定义的模板类.30812.4  小结  31112.5  练习312第  13 章 堆、平衡树和散列表31413.1  概要31413.2  优先队列和堆.31413.2.1  堆排序32013.2.2  关于堆和优先队列实现的说明32013.3  平衡树.32113.4  其他的树结构.32913.5  散列表.32913.6  小结33913.7  练习339第  14 章 图.34314.1  概要34314.2  图数据结构34414.3  最短路径算法.34714.3.1  无权最短路径34714.3.2  加权最短路径35014.4  深度优先算法.35314.5  最小生成树  35714.5.1  Kruskal 算法.  35814.5.2  不交集数据结构.  35814.5.3  Prim 算法  36114.6  小结  36114.7  练习  362第  15 章 算法技术  36515.1  概要  36515.2  分治算法  36515.2.1  分析递归函数  36615.2.2  快速排序.36815.3  贪心算法37215.4  动态规划37815.4.1  最长公共子序列37915.4.2  记忆化38215.4.3  矩阵链乘法38215.5  NP 完全问题38315.6  小结38415.7  练习385术语表387

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值