图书前言

本书是广东省高等职业教育一类品牌专业建设项目资助的广东省精品资源开放课程“数据结构与算法”的配套教材。全体参编教师借鉴学习了国外一些相关的专著和多所国内高职院校的高水平教材,结合多年的教学经验和实际教学条件编撰而成。

“数据结构与算法”是软件开发技术的一门重要的专业基础课程。课程主要讨论现实世界中数据之间的各种逻辑结构、在计算机中的存储结构以及各种算法的设计问题。本书讨论的内容包括: 线性表、栈和队列、字符串、数组与矩阵、树、图、查找、排序。其中,线性表、栈和队列、字符串、数组与矩阵属于线性结构,树和图是非线性结构,查找和排序是应用非常广泛的两个算法。

2013年作者出版过类似书籍,使用三种语言编写,但在使用之后发现,C#代码和Java代码非常类似,没必要再单独列出。所以本书主要采用C语言讲解,目的是让学生更好地理解指针和链表的存储结构。同时,由于目前面向对象的软件分析和设计技术是软件开发的主流方法,所以用面向对象的程序设计语言描述数据结构问题也是必需的。本书在附录部分提供了详细的配套Java代码,读者可比较学习。

本书中的所有代码配合相应的示意图,帮助大家更加容易地理解算法的实质。尤其对数据结构的初学者而言,参考的代码能运行成功是非常重要的。可以改变学习中只是了解了算法,但不能写出正确程序的困境,从而真正地理解了算法。

书中大部分章节都列出了技能目标,有相应的实训、小结,课后有习题供读者思考,是一本提纲挈领、重点突出、给读者留出思考空间的教材。

本书的编写出版是本课程全体教学人员集体智慧的结晶。全书编写过程中,初稿撰写完成后,各位教师相互校阅得到第二稿,在此基础上又花了较多的时间和精力进行集体审稿,从而得到第三稿,最后统稿、审稿、交稿。本书由唐懿芳、钟达夫、林萍任主编,陶南、钟丽萍、崔晓坤任副主编,附录的所有Java代码由唐懿芳整理。

本书在编写过程中,得到了广东科学技术职业学院教务处、计算机工程技术学院领导和同事们的大力支持。同时,艾连科信息技术有限公司技术总监肖冠峰、项目经理席冯彦和珠海宇能科技有限公司项目经理李江对全书的实例和知识点的选择给出了很好的建议。在此向支持和参与本书编写工作的所有老师、同事及朋友表示衷心的感谢!

为了方便教师教学,本书配有电子课件等相关资源,请有此需要的教师或学生登录http: //61.145.231.44: 8080/skills/solver/classView.do?classKey=1088675网站,在“资源下载”相应链接处下载,或者访问清华大学出版社网站下载。

尽管课程组教师在写作过程中非常认真和努力,但书中难免有疏漏之处,敬请读者不吝指正,我们将感激不尽。

编者

2017年1月