为适应培养21世纪计算机各类人才的需要,结合我国高等学校教育工作现状,立足更新教学内容和方法,编写了本书。本书以基本数据结构和算法设计策略为知识单元,系统地介绍了数据结构的基本知识与实际应用,介绍了抽象数据类型和算法的基本概念以及计算机算法的设计方法与分析技巧。本书内容丰富,观点新颖,注重理论联系实际,可作为高等院校计算机学科与工程专业本科生、研究生的教材,也适合广大工程技术人员和自学读者学习参考。计算机的普及极大地改变了人们的生活.目前各行业.各领域都与计算机建立了紧密的联系, 并由此产生开发各种应用软件的需求.为了以最少的成本.最快的速度.最好的质量开发出适合各种应用需求的软件, 必须遵循软件工程的原则, 设计出高效率的程序.一个高效的程序既需要“编程小技巧”, 更需要合理的数据组织和清晰高效的算法.这正是计算机科学领域里数据结构与算法设计所研究的主要内容.一些著名的计算机科学家在有关计算机科学教育的论述中认为, 计算机科学是一种创造性思维活动, 其教育必须面向设计.数据结构与算法设计正是一门面向设计, 且处于计算机学科核心地位的教育课程.通过对数据结构与算法设计的系统学习与研究, 理解和掌握算法设计的主要方法, 培养对算法的计算复杂性进行正确分析的能力, 为独立地设计算法和对给定算法进行复杂性分析奠定坚实的理论基础, 对从事计算机系统结构.系统软件和应用软件研究与开发的科技工作者是非常重要和必不可少的.为了适应培养我国对世纪计算机各类人才的需要, 结合我国高等学校教育工作的现状, 立足培养学生能跟上国际计算机科学技术的发展水平, 更新教学内容和教学方法, 本书以基本数据结构和算法设计策略为知识单元系统地介绍数据结构知识与应用.计算机算法的设计方法与分析技巧.以期为计算机学科的学生提供一个广泛坚实的数据结构与算法设计基础知识. 全书共分10章.首先在第1章中介绍了数据结构.抽象数据类型和算法的基本概念, 接着对算法的计算复杂性和算法的描述做了简要的阐述.然后以抽象数据类型为主线索, 围绕设计算法常用的基本数据结构和基本设计策略, 组织了第2章~第10章的内容. 第2章~第5章依次介绍基于序列的抽象数据类型表.栈.队列和串. 第6章介绍在实际应用中常用的排序与选择算法. 第7章讨论反映层次关系的抽象数据类型树. 第8章介绍非线性结构图及图的算法. 第9章讨论表示集会的抽象数据类型, 如字典.优先队列和并查集等. 最后, 在第10章系统地阐述算法设计的策略与技巧. 本书采用面向对象的C++语言为表述手段, 在保持C++优点的同时, 尽量使数据结构与算法的描述简明.清晰. 为了加深对知识的理解, 各章配有难易适当的习题, 以适应不同程度读者练习的需要. 由于作者的知识和写作水平有限, 书稿虽几经修改, 仍难免有缺点和错误.热忱欢迎同行专家和读者批评指正, 使本书在使用中不断改进.日臻完善. 在本书的编写过程中, 得到全国高等学校计算机专业教学指导委员会的关心和支持,福州大学“211工程”计算机与信息工程重点学科实验室为本书的写作提供了优良的设备与工作环境,电子工业出版社负责本书编辑出版工作的全体同仁工作认真细致, 一丝不苟, 为本书的出版付出了大量辛勤劳动,傅清祥教授在百忙之中认真审阅了全书, 提出了许多宝贵的改进意见.在此, 一并表示衷心的谢意! 作者2001年10月