书评
"数据结构"是计算机专业及相关专业的一门重要专业基础课, 也是一门必修的核心课程, 并且已成为其他理工专业的热门选修课.
在计算机科学的各领域中, 都要使用到各种不同的数据结构, 如编译系统中要使用栈.散列表.语法树等, 操作系统中要使用队列.存储管理表.目录树等, 数据库系统中要使用线性表.链表.索引树等, 人工智能中要使用广义表.检索树.有向图等:同样在面向对象的程序设计.计算机图形学.软件工程.多媒体技术.计算机辅助设计等领域, 都会用到各种不同的数据结构.因此, 学好数据结构, 对从事计算机技术及相关领域的工作人员来说, 是非常重要的, 它可以使你掌握各种常用的数据结构及算法实现, 以及每一种算法的时间复杂度分析和空间复杂度分析, 知道在什么情况下, 使用什么样的数据结构*方便, 为以后开发大型程序打下基础.
数据结构的主要任务是:讨论现实世界中的各种数据(数字.字符.字符串.声音.图形.图像等)的逻辑结构.在计算机中的各种存储结构(存储表示)以及对各种非数值运算的算法实现, 分析各种不同算法的好坏及其在什么地方应用比较合适.通过数据结构课程的学习, 使学生具备用所学的数据结构来解决实际问题及评价算法优劣的能力, 为以后学习后续计算机专业课程及走上工作岗位从事计算机大型软件开发铺路.
本书内容共分9章, 第1章介绍了数据结构与算法等一些基本术语, 并对算法描述及算法分析作了简单说明, 介绍了衡量算法优劣的主要因素:时间复杂度和空间复杂度的求法:第2章到第4章, 介绍了线性结构(线性表.栈.队列.串)的逻辑特征, 一些常用算法的实现及基本应用, 第5章到第7章, 介绍了非线性结构(多维数组.广义表.树.二叉树.图)的逻辑特征, 在计算机中的存储表示及一些常用算法实现及基本应用, 第8章到第9章, 介绍了在计算机中使用非常广泛的两种运算:查找和排序, 对一些常用的查找.排序方法进行了详细说明, 并给出了实现的算法及时间复杂度和空间复杂度分析.各章内容有相对独立的部分, 可便于不同院校不同专业按需要组织教学.全书侧重于数据结构的应用, 力求讲授内容与具体的计算机应用实例相结合, 以便于学生加深对各章内容的理解和掌握.
本书的*大特点是采用面向对象的程序设计语言(C++语言)作为算法的描述语言, 所有算法都已经上机调试通过.但是, 由于篇幅所限, 大部分算法都是以单独的函数形式给出, 若读者要运行这些算法, 还必须给出一些变量的说明及主函数来调用所给的函数.因此, 本书中的算法描述比原来数据结构教材中用类趴SCAL语言或类C语言描述算法更直观, 学生更容易理解和接受.作者在十几年的数据结构课程教学中, 对数据结构中的各种算法进行了认真的研究和分析, 在这方面积累了丰富的经验, 因此, 本书中所选的例题和习题都具有一定的针对性, 都是针对特定的数据结构来进行描述的, 方便学生理解和接受, 并能为复杂的数据结构算法描述架桥铺路.
本书中所有算法都在VC++6.0环境下运行通过(由于篇幅所限, 本书中仅给出了实现某功能算法的函数).为了方便教学, 本书免费为授课教师提供用PowerPoint制作的电子教案, 教师在使用时可以根据需要进行必要的修改.
本书可以作为高等院校计算机类或信息类相关专业数据结构课程教材, 建议讲授课时为50至70学时, 上机实践课时为20至30学时.各院校.各位教师可根据自己学校的专业特点和学生的实际情况, 适当增删, 目录中前打*号的可以作为选讲内容.
本书也可供从事计算机应用工作的工程与技术人员参考, 还可以作为高等院校学生的自学参考书.
与本书配套的还有《数据结构(C++版)习题解答及实习指导》, 书中提供配套的习题及解答, 并配备有数据结构的上机实验指导, 可以作为学习指导手册.
本书由李根强主编, 并负责全书的统稿.修改.定稿工作.谢月娥.吴蓉晖.杜四春任副主编.参加本书编写的还有曹翊旺.银红霞.王 .文斌.刘敏.李红.杜景红.王涛.李辉等, 尹海波.王 .张伟对部分源代码进行了仔细的调试.
由于编者水平有限, 书中不妥或错误之处在所难免, 恳请专家和广大读者批评指正.
编者
2004年10月