新华一城书集店铺主页二维码
新华一城书集 微信认证
上海新华书店官方微信书店
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

数据结构图解

87.84
运费: ¥ 5.00-20.00
库存: 3 件
数据结构图解 商品图0
数据结构图解 商品图1
数据结构图解 商品图2
数据结构图解 商品图3
数据结构图解 商品图4
数据结构图解 商品缩略图0 数据结构图解 商品缩略图1 数据结构图解 商品缩略图2 数据结构图解 商品缩略图3 数据结构图解 商品缩略图4

商品详情

1.初学者友好:专为在校学生、应届毕业生及新手程序员打造,避开复杂数学,轻松入门数据结构。2.内容循序渐进:覆盖初级到部分中级数据结构,从基础概念到实际应用,逐步深入讲解。3.实践导向:每种数据结构均配 Python 实现示例,边学边练,快速掌握实践技能。4.性能分析透彻:考虑数据结构操作的时间和内存需求,助力编写代码。5.知识体系完整:介绍数组、链表、栈、树、图等多种数据结构,构建系统知识架构。

本书旨在向读者介绍最重要且广泛使用的数据结构,帮助他们理解这些数据结构的应用案例以及如何在编程中充分发挥它们的作用。书中不仅介绍了基本的数组、链表、栈和优先队列的实现,以及更高级的数据结构,比如散列表和散列函数的使用,用于加速搜索,还探讨了与其相关的风险。此外,读者还将学习如何使用树和二叉查找树(BST)来组织数据,以及如何使用图来建模和处理复杂的数据。书中的内容旨在引导初学者,无须具备高深的数学知识,只需掌握高中水平的数学即可开始学习。每种数据结构都配有Python实现示例,使读者能够立即开始实践所学的知识。此外,本书还考虑了数据结构操作的时间和内存需求,以帮助读者在编写代码时选择最佳的数据结构解决方案。最终,读者将了解数据结构的权衡取舍以及如何避免潜在的问题,以便利用数据结构的强大功能来编写更高效的代码。马尔切洛·拉·罗卡(Marcello La Rocca),一名研究科学家和全栈工程师,为Twitter、Microsoft和Apple创建大规模Web应用程序和机器学习基础设施做出了贡献,详见https://www.linkedin.com/in/marcellolarocca/。第1 章 数据结构简介:为什么要学数据结构 ............................................. 11.1 欢迎阅读本书 ........................................... 11.1.1 数据结构无处不在 ........................ 21.1.2 人人可学数据结构 ........................ 21.2 什么是数据结构 ....................................... 21.3 为什么应该关注数据结构 ........................ 41.3.1 什么时候需要数据结构 ................ 51.3.2 我将来需要编写代码来实现这些数据结构吗 ............................... 71.3.3 到底应该怎样选择数据结构 ......... 71.4 在实际项目中应该如何使用数据结构 ..... 81.4.1 以心智模型教你用数据结构 ......... 81.4.2 数据结构的应用实例 ................... 101.5 要点回顾 .................................................. 13第2 章 静态数组:创建你的第一个数据结构 ............................................ 142.1 什么是数组 .............................................. 142.1.1 什么时候需要使用数组 ............... 152.1.2 定义:尺寸固定型与尺寸可变型 ................................................. 162.1.3 值及其索引 .................................. 182.1.4 初始化 .......................................... 182.2 Python 中的数组 ...................................... 192.2.1 Python 中的list 类与array.array 类 ......................... 202.2.2 索引设定 ...................................... 212.3 数组中的操作 ...................................... 212.3.1 无序数组类 .................................. 222.3.2 添加新元素 .................................. 232.3.3 删除某个元素 .............................. 242.3.4 查找某个值 .................................. 252.3.5 遍历.............................................. 252.4 数组的实际应用 ...................................... 262.4.1 数据统计 ...................................... 262.4.2 (藏品)集合 .............................. 282.4.3 多维数组 ...................................... 292.5 要点回顾 .................................................. 29第3 章 有序数组:查找更快,但需付出代价 ............................................ 303.1 有序数组的意义何在 .............................. 303.2 实现有序数组 .......................................... 313.2.1 插入.............................................. 323.2.2 删除.............................................. 343.2.3 线性查找 ...................................... 353.2.4 二分查找 ...................................... 363.3 要点回顾 .................................................. 38第4 章 大O 记号:衡量算法性能的准则体系 ............................................ 394.1 如何选择最佳方案 .................................. 394.1.1 剖面分析 ...................................... 404.1.2 渐近分析 ...................................... 414.1.3 应该选择哪种方案 ....................... 414.2 大O 记号 ................................................. 414.2.1 随机存取机(RAM)模型 .......... 414.2.2 增长速率 ...................................... 424.2.3 常见的函数量级 .......................... 444.2.4 真实世界里的增长速率 ............... 454.2.5 大O 算术 ..................................... 474.2.6 最坏情况分析、平均情况分析及分摊分析 .................................. 494.2.7 资源衡量 ...................................... 504.3 渐近分析实例 .......................................... 514.3.1 线性查找 ...................................... 514.3.2 二分查找 ...................................... 524.4 要点回顾 ................................................. 54第5 章 动态数组:处理尺寸可变的数据集合 ............................................ 555.1 静态数组的局限性 .................................. 555.1.1 尺寸固定 ...................................... 565.1.2 权衡利弊 ...................................... 575.2 如何增加数组长度 .................................. 585.3 获奖作品展示柜 ...................................... 585.3.1 策略1:每次增加1 个单元 ........ 595.3.2 策略2:按固定量增加单元数 .... 605.3.3 策略3:容量加倍 ....................... 605.3.4 策略对比 ...................................... 615.3.5 将各种增加策略用于数组 ........... 625.4 数组需要进行缩减吗 .............................. 635.4.1 删除后减半 .................................. 645.4.2 更明智的缩减 .............................. 655.5 实现动态数组 .......................................... 655.5.1 DynamicArray 类 ......................... 665.5.2 插入 ............................................. 665.5.3 查找 ............................................. 685.5.4 删除 ............................................. 695.6 要点回顾 ................................................. 70第6 章 链表:易于变通的动态集合 .......... 716.1 链表与数组 .............................................. 716.1.1 链表的底层机制 .......................... 726.1.2 对比数组与链表 .......................... 726.2 单链表 ..................................................... 736.2.1 订单管理 ...................................... 746.2.2 实现单链表 .................................. 756.2.3 插入 ............................................. 766.2.4 查找 ............................................. 786.2.5 删除 ............................................. 806.2.6 从表首删除元素 .......................... 816.3 有序链表 ................................................. 826.3.1 在链表里面插入 .......................... 826.3.2 能否改进查找操作的性能 ........... 836.4 双链表 ..................................................... 836.4.1 链接双倍,乐趣翻倍 ................... 846.4.2 折返的重要性 .............................. 856.4.3 插入 ............................................. 866.4.4 查找与遍历 .................................. 886.4.5 删除 ............................................. 886.4.6 拼接两个链表 .............................. 896.5 循环链表 ................................................. 906.5.1 循环链表实例 .............................. 906.5.2 实现技巧 ...................................... 926.6 要点回顾 ................................................. 93第7 章 抽象数据类型:设计最简单的容器——袋 ....................................... 947.1 抽象数据类型与数据结构 ....................... 947.1.1 定义 ............................................. 957.1.2 数组与链表:抽象数据类型还是数据结构 .............................. 967.1.3 又一个实例:照明开关 ............... 977.2 容器 ......................................................... 997.2.1 什么是容器 .................................. 997.2.2 什么不是容器 ............................ 1007.2.3 容器的主要特征 ........................ 1007.3 最简单的容器:袋 ................................ 1017.3.1 袋的定义 .................................... 1017.3.2 袋的应用实例 ............................ 1027.3.3 袋的实现 .................................... 1047.4 要点回顾 ................................................ 106第8 章 栈:处理数据之前先将其叠放起来 .......................................... 1088.1 栈作为抽象数据类型 ............................. 1088.1.1 栈与后进先出策略 ..................... 1098.1.2 栈的操作 .................................... 1098.1.3 栈的应用实例 ............................ 1108.2 栈作为数据结构 .................................... 1118.2.1 以静态数组存储栈的数据 ......... 1128.2.2 以动态数组存储栈的数据 ......... 1128.2.3 链表与栈 .................................... 1138.3 栈的链表实现 ........................................ 1148.3.1 入栈 ............................................ 1158.3.2 出栈 ............................................ 1158.3.3 查看 ............................................ 1168.4 理论与现实 ............................................ 1178.5 栈的更多应用 ........................................ 1198.5.1 调用栈 ........................................ 1208.5.2 表达式求值 ................................ 1218.5.3 撤销/重做 ................................... 1228.5.4 折返 ............................................ 1228.6 要点回顾 ................................................ 123第9 章 队列:按抵达次序留存信息 ........ 1249.1 队列作为抽象数据类型 ......................... 1249.1.1 先进先出策略 ............................ 1249.1.2 队列的操作 ................................ 1259.1.3 队列的应用实例 ......................... 1269.2 队列作为数据结构 ................................ 1289.2.1 以链表实现队列 ......................... 1299.2.2 以静态数组实现队列 ................. 1309.2.3 实现方案对比 ............................ 1339.3 队列的实现 ............................................ 1339.3.1 底层静态数组 ............................ 1349.3.2 入队............................................ 1369.3.3 出队............................................ 1389.4 用动态数组会如何 ............................. 1409.5 队列的更多应用 .................................... 1419.5.1 消息传送系统 ............................ 1429.5.2 Web 服务器 ................................ 1429.5.3 操作系统 .................................... 1429.6 要点回顾 ................................................ 143第10 章 优先级队列和堆:根据优先级处理数据 ........................................ 14410.1 引入优先级来拓展队列 ....................... 14410.1.1 处理漏洞(以改进方式) ..... 14510.1.2 优先级队列的抽象数据类型 ........................................ 14610.2 优先级队列作为数据结构 ................... 14710.2.1 有序链表和有序数组 ............. 14710.2.2 无序链表和无序数组 ............. 14810.2.3 性能概览 ................................ 14810.2.4 偏序 ........................................ 14910.3 堆 ......................................................... 14910.3.1 特殊的树结构 ........................ 15010.3.2 堆的其他性质 ........................ 15110.3.3 堆的性能 ................................ 15210.3.4 最大堆和最小堆 ..................... 15210.4 实现堆 ................................................. 15310.4.1 如何存储堆 ............................ 15310.4.2 构造函数、优先级及辅助方法 ........................................ 15410.4.3 插入 ........................................ 15510.4.4 取顶 ........................................ 15810.4.5 堆化 ........................................ 16110.5 优先级队列的应用实例 ....................... 16310.6 要点回顾 .............................................. 165第11 章 二叉查找树:寻求平衡的容器 ................................................ 16611.1 树的构成要素 ...................................... 16611.1.1 树的定义 ................................ 16711.1.2 从链表到树 ............................ 16811.1.3 二叉树 .................................... 16911.1.4 树的若干应用 ........................ 16911.2 二叉查找树 .......................................... 17011.2.1 次序很重要 ............................ 17011.2.2 类定义和构造函数 ................. 17111.2.3 查找 ........................................ 17111.2.4 寻找最大值和最小值 ............. 17311.2.5 插入 ........................................ 17411.2.6 删除 ........................................ 17611.2.7 所有情况的整合 ..................... 17911.2.8 遍历 ........................................ 18011.2.9 前邻与后邻 ............................ 18011.3 平衡树 ................................................. 18211.3.1 二叉查找树的应用实例 ......... 18211.3.2 敌手型插入序列 ..................... 18311.3.3 删除操作会使树失衡 ............. 18411.3.4 调整树的平衡 ........................ 18411.4 要点回顾 .............................................. 185第12 章 字典与散列表:如何构建和使用关联式数组 ........................... 18612.1 字典问题 .............................................. 18612.1.1 删除重复项 ............................ 18712.1.2 字典抽象数据类型 ................. 18812.2 实现字典的数据结构 .......................... 18912.2.1 数组 ........................................ 18912.2.2 链表 ........................................ 18912.2.3 平衡二叉查找树 ..................... 19012.2.4 对比总结 ................................ 19012.3 散列表 ................................................. 19012.3.1 新的索引方案 ........................ 19112.3.2 索引操作的开销 .................... 19212.3.3 理想模型的问题 .................... 19212.4 散列 ..................................................... 19312.4.1 散列函数 ................................ 19412.4.2 除余法 .................................... 19512.4.3 乘截法 .................................... 19512.5 解决冲突 ............................................. 19612.5.1 结链 ....................................... 19712.5.2 开放式定址 ............................ 19912.5.3 开放式定址存在的问题 ......... 20012.5.4 使用散列会带来的风险 ......... 20112.6 要点回顾 ............................................. 202第13 章 图:学会如何对数据中的复杂关系进行建模....................... 20413.1 什么是图 ............................................. 20413.1.1 图的定义 ................................ 20513.1.2 好友图 .................................... 20613.1.3 有向图与无向图 .................... 20613.1.4 有环图与无环图 .................... 20713.1.5 连通图和连通分量 ................ 20813.1.6 作为图的树 ............................ 21013.2 图的实现 ............................................. 21013.2.1 邻接表 .................................... 21013.2.2 邻接矩阵 ................................ 21313.3 图搜索 ................................................. 21413.3.1 寻找好友 ................................ 21413.3.2 广度优先搜索 ........................ 21513.3.3 深度优先搜索 ........................ 21813.4 未来可期 ............................................. 22013.5 要点回顾 ............................................. 221
新华一城书集店铺主页二维码
新华一城书集 微信公众号认证
上海新华书店官方微信书店
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

数据结构图解

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:xhbookmall
新华一城书集微书店官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏