数据结构原理与应用实践教程
定 价:¥79
中 教 价:¥63.20 (8.00折)
库 存 数: 2
丛 书 名:普通高校本科计算机专业特色教材·算法与程序设计
本书是江苏省高等学校重点教材《数据结构原理与应用》的配套教材,补充与拓展课堂教学内容,衔接理论与实践。本书在选材与编排上以易读易用易练可研为目标,为数据结构相关课程提供全方位的实践练习指导。全书分为4篇: 第1篇是原理篇,简述典型结构(线性表、栈和队列、数组和矩阵、树和二叉树、图等)及其在计算机中的实现原理,查找和排序的经典算法的原理;第2篇是验证篇,提供了主教材的算法实现;第3篇是设计篇,按主教材内容顺序,为每一章设计了3~5个设计型实践活动,适合作为课程实验素材;第4篇是综合篇,给出10个涉及多个知识点的复杂设计任务,可作为课程设计的素材。 本书内容全面,可单独作为数据结构相关课程的实践教材使用。本书提供的大量源程序和设计思想,对于从事计算机应用及开发的技术人员、数据结构和程序设计教授或学习的教师和学生具有很好的参考和指导作用。 本书源程序在Visual Studio 6.0及Visual Studio 2010调试通过,源代码可以在清华大学出版社官网下载。
本书是省重点教材《数据结构原理与应用》(ISBN:9787302589327,清华大学出版社出版)的配套教材,为《数据结构》或《数据结构与算法》等课程学习提供基础知识、验证、设计、综合等全方位的实践练习服务:原理篇扼要阐述典型结构及相关应用的实现原理;验证篇实现了主教材上的算法,设计篇提供基础性训练,可作为课程实验相关内容;综合篇提供较复杂、多知识点的综合训练,可作为课程设计的素材。秉承主教材可读可学可用可研的编写理念,本教材编写的总体原则是易读易用易练可研。
数据结构是一门有关程序设计理论与实践的基础性课程。数据结构的研究范畴涵盖典型的逻辑结构在计算机中的存储设计和操作实现及查找、排序等典型算法。逻辑结构用于实体的抽象,高性能的算法需要合适的存储设计和算法设计。有效的数据结构课程学习可以提高学习者用计算机求解问题、分析问题、设计方案和解决问题的能力。但如果只知理论而不把理论落实到实践中,将无法取得这些效果。因此,数据结构课程是一门实践性很强的课程。本书是首批国家级一流本科课程、江苏省高等学校重点教材《数据结构原理与应用》(ISBN: 9787302589327,清华大学出版社出版)的配套教材,为数据结构或数据结构与算法等课程学习提供基础知识、验证、设计、综合等全方位的实践练习服务: 原理篇扼要阐述典型结构及相关应用的实现原理;验证篇实现了主教材上的算法;设计篇提供基础性训练,可作为课程实验相关内容;综合篇提供较复杂、多知识点的综合训练,可作为课程设计的素材。秉承主教材可读可学可教可研和可练的编写理念,本书编写的总体原则是易读易用易练可研。1. 易读原理篇以最少的篇幅、最易理解的描述方式及最精练的语言陈述与实践活动相关的理论知识,包括结构特性与存储描述以及算法原理。验证篇给出验证程序的设计思路、程序框架、函数调用关系,方便实践者分析、阅读和理解源程序,在运行验证程序时对源代码心中有数。2. 易用原理篇内容可以成为学生实践活动时的理论知识手册,方便查阅。验证篇的内容使实践者上机操作无碍: 源码无偿提供;第1章中给出源码的使用方法;对每个验证程序给出了运行与操作说明,一目了然。3. 易练设计篇对每一个任务从多个方面给出设计提示,包括数据结构设计、功能设计、核心算法设计和算法的类语言描述,启发实践者思路,减少有些实践者因设计上的偏颇无法完成实践的挫败感。设计篇对应主教材的每一章,给出3~5个不同难度的设计任务,适合不同水平实践者的需求。实践者也可以由易到难,渐进提高知识的应用与程序设计能力。设计报告是专业能力的一个方面,在工程专业认证中把其作为与同行沟通的方式之一。本书给出了实验报告和课程设计报告的撰写提纲,明确每一项的内容,并且给出了一个完整实验报告范例。验证程序和实验报告范例,有助于学生在模仿中练习与提高。4. 可研本书通过设置思考题,引导学习者在与实践相关的问题上深入研究。在验证程序的 思考题中,给出研读源程序回答问题和运行程序回答问题,引导学生阅读与理解程序的设计与程序功能。设计篇的测试与思考,通过测试用例引导学生完善算法设计,并且给出触类旁通的问题或本问题的深入讲解,打开研究思考之门。千淘万漉虽辛苦,吹尽黄沙始到金。近二十年的教学积累形成了数据结构国家一流课程,凝聚而成了《数据结构原理与应用》和《数据结构原理与应用实践教程》两本书。希望它似一颗春天的种子,在今后的岁月里经过所有使用者的养育,能够秋收万颗子,为新工科教育作一份贡献。感谢丁红、朱玲玲、周建美和刘维华为本书所做的工作: 丁红主要编写了设计篇的第7章、综合篇任务6和查找部分的验证程序,朱玲玲主要编写了设计篇的第2章和第4章,刘维华主要编写了设计篇的第6章和综合篇任务7,周建美主要编写了队列、查找、稀疏矩阵的验证程序,其余内容由徐慧编写。在本书的编写、出版过程中,得到清华大学出版社编辑的支持,在此表示深深的感谢!特别感谢袁勤勇主任,为主教材和本书的辛勤付出!由于编者水平和时间有限,书中涉及的编程工作量大,难免有缺点和错误,恳请同行专家和读者批评指正,使本书在使用中不断精进。
编者2022年7月
第1篇原理篇第1章线性表31.1顺序表31.1.1顺序表存储定义与特性31.1.2顺序表操作实现原理41.1.3顺序表的应用61.2链表71.2.1单链表存储定义与特性71.2.2单链表操作实现原理81.2.3链表的应用11第2章栈132.1顺序栈132.1.1顺序栈的存储定义和特性132.1.2顺序栈操作实现原理142.2链栈142.2.1链栈的存储定义和特性142.2.2链栈操作实现原理152.3栈的应用16第3章队列193.1循环队列193.1.1循环队列存储定义和特性193.1.2循环队列操作实现原理203.2链队213.2.1链队的存储定义和特性213.2.2链队的操作实现原理213.3队列的应用22第4章数组和矩阵234.1数组和矩阵的存储234.2稀疏矩阵转置234.3稀疏矩阵求和24第5章树和二叉树275.1树275.2二叉树275.2.1二叉树的存储定义275.2.2二叉树操作实现原理285.3线索二叉树315.3.1线索二叉树的存储定义315.3.2线索二叉树操作实现原理315.4最优二叉树335.4.1最优二叉树的存储定义和特性335.4.2最优二叉树的构建335.4.3哈夫曼编码的构建34第6章图356.1邻接矩阵存储356.1.1邻接矩阵存储定义与特性356.1.2邻接矩阵操作实现原理366.2图的邻接表存储376.2.1邻接表存储定义与特性376.2.2邻接表操作实现原理386.3图的遍历及其应用396.3.1深度优先遍历396.3.2广度优先遍历396.3.3连通性问题406.3.4求最远顶点406.4图的应用416.4.1求最小生成树416.4.2单源点最短距离426.4.3任意两点的最短距离426.4.4AOE网的拓扑排序436.4.5AOE网的关键活动43第7章查找457.1线性表查找457.2串的模式匹配467.3二叉排序树477.3.1二叉排序树存储定义与特性477.3.2二叉排序树操作实现原理477.4散列查找487.4.1散列技术487.4.2散列表操作实现原理48第8章排序518.1插入类排序518.2交换类排序528.3选择排序538.4二路归并排序548.5基数排序54第2篇验证篇第1章绪591.1算法到程序转换601.2验证性实践步骤631.3实验环境简介641.3.1VC 6.0641.3.2VS系列671.4验证程序的设计71第2章线性表732.1顺序表732.2单链表822.3顺序表的应用952.4一元稀疏多项式求和101第3章栈和队列1093.1顺序栈1093.2链栈1163.3栈的应用1213.3.1括号匹配1213.3.2表达式计算1243.4顺序队列1333.5链队1403.6队列应用147第4章稀疏矩阵1534.1稀疏矩阵转置1534.2稀疏矩阵求和158第5章二叉树1655.1二叉树简介1655.2中序线索化二叉树1765.3哈夫曼树和哈夫曼编码183第6章图1896.1图的实现1896.1.1程序设计简介1896.1.2无向图的邻接矩阵实现1906.1.3有向网的邻接表实现2026.2图的遍历应用2176.2.1邻接矩阵存储的图的遍历应用2176.2.2邻接表存储的图的遍历应用2216.3图的应用2256.3.1最小生成树2256.3.2最短距离2326.3.3拓扑排序2396.3.4关键活动244第7章查找2517.1静态查找2517.2字符串匹配2567.3二叉排序树2627.4散列查找270第8章内部排序277第3篇设计篇第1章绪2991.1实验步骤2991.2实验报告格式3011.3实验报告案例301第2章线性表3032.1实验目的3032.2实验任务3032.2.1集合运算3032.2.2一元多项式求导3052.2.3有序表合并3072.2.4循环单链表3092.2.5约瑟夫环问题311第3章栈和队列3153.1实验目的3153.2实验任务3153.2.1数制转换3153.2.2算术表达式正确性判断3173.2.3栈的逆置3183.2.4求任意长两个大整数的和3193.2.5单指针链队问题3223.2.6杨辉三角形问题324第4章数组和矩阵3274.1实验目的3274.2实验任务3274.2.1求两个对称矩阵之和与乘积3274.2.2蛇形矩阵3294.2.3魔方问题330第5章树与二叉树3335.1实验目的3335.2实验任务3335.2.1二叉树的叶结点计数3335.2.2复制二叉树3355.2.3求二叉树的宽度3365.2.4求先/中/后序遍历序列的首、尾数据元素3395.2.5叶结点路径问题341第6章图3436.1实验目的3436.2实验任务3436.2.1存储结构转换问题3436.2.2有向图的路径问题3466.2.3无向图的路径问题3506.2.4俱乐部选址问题3526.2.5物流最短路径问题354第7章查找3577.1实验目的3577.2实验任务3577.2.1顺序查找与折半查找3577.2.2用二叉排序树实现字符统计3587.2.3拉链法处理冲突的散列表3607.2.4开放定址法处理冲突的散列表363第8章排序3678.1实验目的3678.2实验任务3678.2.1单链表上的直接插入排序3678.2.2单链表上的简单选择排序3698.2.3双向冒泡排序3708.2.4序列重排3728.2.5堆判断374第4篇综合篇第1章绪论3791.1综合设计内容3801.2综合设计报告格式381第2章综合任务3832.1个人乐库管理系统3832.1.1问题描述3832.1.2分析与设计提示3832.1.3性能要求3842.2高校学生信息快速查询系统3842.2.1问题描述3842.2.2分析与设计提示3842.2.3性能要求3862.3纸牌游戏3862.3.1问题描述3862.3.2分析与设计提示3872.3.3性能要求3882.4排雷游戏3882.4.1问题描述3882.4.2分析与设计提示3892.4.3性能要求3902.5迷宫问题3902.5.1问题描述3902.5.2分析与设计提示3912.5.3性能要求3932.6校园导游系统3932.6.1问题描述3932.6.2分析与设计提示3932.6.3性能要求3952.7打印任务管理3952.7.1问题描述3952.7.2分析与设计提示3962.7.3性能要求3962.8教学计划编制3972.8.1问题描述3972.8.2分析与设计提示3982.8.3性能要求3982.9基于哈夫曼编码的编码译码问题3982.9.1问题描述3982.9.2分析与设计提示3982.9.3性能要求3992.10校园优秀学生的推荐与评比4002.10.1问题描述4002.10.2分析与设计提示4002.10.3性能要求401
参考文献403附录实验报告示例405实验学生基本信息管理4051问题描述与分析4052数据结构设计4063算法设计4074运行与测试4095小结410