前言 “数据结构”是一门有关程序设计理论与实践的基础性课程。数据结构的研究范畴涵盖典型的逻辑结构在计算机中的存储设计和操作实现及查找、排序等典型算法。逻辑结构用于实体的抽象,高性能的算法需要合适的存储设计和算法设计。有效的“数据结构”课程学习可以提高学习者用计算机求解问题、分析问题、设计方案和解决问题的能力。但如果只知理论而不把理论落实到实践中,将无法取得这些效果。因此,“数据结构”课程是一门实践性很强的课程。 本书是首批国家级一流本科课程、江苏省高等学校重点教材《数据结构原理与应用》(ISBN: 9787302589327,清华大学出版社出版)的配套教材,为“数据结构”或“数据结构与算法”等课程学习提供基础知识、验证、设计、综合等全方位的实践练习服务: 原理篇扼要阐述典型结构及相关应用的实现原理;验证篇实现了主教材上的算法;设计篇提供基础性训练,可作为课程实验相关内容;综合篇提供较复杂、多知识点的综合训练,可作为课程设计的素材。秉承主教材“可读”“可学”“可教”“可研”和“可练”的编写理念,本书编写的总体原则是“易读”“易用”“易练”“可研”。 1. 易读 原理篇以最少的篇幅、最易理解的描述方式及最精练的语言陈述与实践活动相关的理论知识,包括结构特性与存储描述以及算法原理。验证篇给出验证程序的设计思路、程序框架、函数调用关系,方便实践者分析、阅读和理解源程序,在运行验证程序时对源代码心中有数。 2. 易用 原理篇内容可以成为学生实践活动时的理论知识手册,方便查阅。验证篇的内容使实践者上机操作无碍: 源码无偿提供;第1章中给出源码的使用方法;对每个验证程序给出了运行与操作说明,一目了然。 3. 易练 设计篇对每一个任务从多个方面给出设计提示,包括数据结构设计、功能设计、核心算法设计和算法的类语言描述,启发实践者思路,减少有些实践者因设计上的偏颇无法完成实践的挫败感。设计篇对应主教材的每一章,给出3~5个不同难度的设计任务,适合不同水平实践者的需求。实践者也可以由易到难,渐进提高知识的应用与程序设计能力。设计报告是专业能力的一个方面,在工程专业认证中把其作为与同行沟通的方式之一。本书给出了实验报告和课程设计报告的撰写提纲,明确每一项的内容,并且给出了一个完整实验报告范例。验证程序和实验报告范例,有助于学生在模仿中练习与提高。 4. 可研 本书通过设置思考题,引导学习者在与实践相关的问题上深入研究。在验证程序的 “思考题”中,给出“研读源程序回答问题”和“运行程序回答问题”,引导学生阅读与理解程序的设计与程序功能。设计篇的“测试与思考”,通过测试用例引导学生完善算法设计,并且给出触类旁通的问题或本问题的深入讲解,打开研究思考之门。 千淘万漉虽辛苦,吹尽黄沙始到金。近二十年的教学积累形成了“数据结构”国家一流课程,凝聚而成了《数据结构原理与应用》和《数据结构原理与应用实践教程》两本书。希望它似一颗春天的种子,在今后的岁月里经过所有使用者的养育,能够秋收万颗子,为新工科教育作一份贡献。 感谢丁红、朱玲玲、周建美和刘维华为本书所做的工作: 丁红主要编写了设计篇的第7章、综合篇任务6和查找部分的验证程序,朱玲玲主要编写了设计篇的第2章和第4章,刘维华主要编写了设计篇的第6章和综合篇任务7,周建美主要编写了队列、查找、稀疏矩阵的验证程序,其余内容由徐慧编写。在本书的编写、出版过程中,得到清华大学出版社编辑的支持,在此表示深深的感谢!特别感谢袁勤勇主任,为主教材和本书的辛勤付出! 由于编者水平和时间有限,书中涉及的编程工作量大,难免有缺点和错误,恳请同行专家和读者批评指正,使本书在使用中不断精进。 编者2022年7月