前言 在讲授“数据结构”时,常常发现不少学生对于C语言掌握得不扎实,导致学习数据结构与算法时比较困难,对教材中的算法一知半解,甚至不去关注算法的实现,至于独立设计与实现算法更是一件困难的事情。平时仅满足于大致思想的理解,到考研时,才不得不花大量的时间去学习算法,但这时未必能快速领会其中的算法思想。若有一本涵盖C语言基础、数据结构及算法实现的图书,由浅入深地讲解C语言难点,并详细分析算法,可能对读者理解和掌握数据结构非常有帮助。 “数据结构与算法”是计算机、软件工程等相关专业的一门非常重要的核心课程和专业基础课程,是继续深入学习后续课程(如算法设计与分析、操作系统、编译原理、人工智能、机器学习等)的重要基础。随着计算机应用领域的不断发展和与日俱增的海量数据信息,数据结构在系统软件设计和应用软件设计方面的重要作用更加突出。因此,掌握扎实的数据结构与算法的基本知识和技能对于今后的专业学习和软件开发显得格外重要。在学习数据结构与算法时,不仅要学会如何抽象建模、理解数据元素之间的关系、算法思想,还要能将算法用C/C++/Java等高级语言实现。 在学习数据结构与算法的过程中,许多专业术语较为抽象,对于初学者来说,有些概念及算法不容易理解和掌握,若语言掌握得不够深入,更增加了学习的难度。《深入浅出数据结构与算法:微课视频版》深入剖析了C语言中的难点:指针、链表、函数传值调用和传地址调用等,常用算法实现。《深入浅出数据结构与算法:微课视频版》采用通俗易懂的语言讲解数据结构中抽象的概念,通过以图表和案例的方式分析算法思想,便于读者真正理解和掌握。《深入浅出数据结构与算法:微课视频版》内容全面,涵盖数据结构所有知识点,所有算法采用C语言实现,其代码均在Visual Studio环境下调试通过,所有案例均提供完整的程序,无须修改就能直接运行。 《深入浅出数据结构与算法:微课视频版》凝结了作者多年来的数据结构与算法学习与教学实践经验,针对每一部分内容,精选了涵盖所有知识点的典型案例,这些案例有的来自各重点高校和全国统考试题,有的来自于软考、各大公司笔试面试题目。在内容的讲解上,语言描述通俗易懂、循序渐进,另外还配套了微课视频讲解,视频讲解更加针对重点、难点进行分析,以便读者理解和掌握。所有算法均提供了完整代码实现,最后还提供了C语言程序调试技术的讲解。通过学习《深入浅出数据结构与算法:微课视频版》,不仅能帮助读者掌握数据结构与算法理论知识,还能提高C语言编程和调试技术,培养解决复杂工程问题的能力。 《深入浅出数据结构与算法:微课视频版》赠送同步微视频、案例源代码、教学大纲和PPT课件,方便读者学习和使用,读者可扫描下方二维码下载获取相关资源。 PPT课件 《深入浅出数据结构与算法:微课视频版》适用于想全面系统地掌握数据结构与算法的读者,特别是学习数据结构与算法时感到困惑的读者。可作为学习数据结构的自学教材,也可作为计算机、软件工程等相关专业学生的考研辅导用书和参加软考人员的辅导用书。 有这么多热心读者关心和支持《深入浅出数据结构与算法:微课视频版》的出版,我感到非常欣慰,在此也对所有关注《深入浅出数据结构与算法:微课视频版》的朋友们说声“谢谢”!希望今后能有更多的朋友关注《深入浅出数据结构与算法:微课视频版》,提出更多的改进建议。 为什么要学习数据结构与算法 如果你打算今后从事软件开发,或从事计算机科研、教学等工作,必须学好数据结构与算法。首先,数据结构与算法作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它;其次,数据结构与算法是计算机软考、计算机等级考试等相关考试的必考内容之一,要是想顺利通过这些专业考试,你也必须学好它;最后,数据结构与算法还是你今后毕业,进入各软件公司、事业单位的必考内容之一,如果你想获得一份满意的工作,同样必须学好它。 即使你没有以上考虑,作为一名计算机从业人员和爱好者,数据结构与算法是其他后续计算机专业课程的基础,人工智能、机器学习等许多课程都会用到数据结构与算法方面的知识。要想学好计算机,数据结构与算法是必须掌握的内容。 如何学好数据结构与算法 经常有学生问我诸如“如何学好C语言”“如何学好Java程序设计”“如何学好数据结构与算法”这样的问题,我总是会告诉他们“多看书,多上机”。尽管在上课时我反复强调看书和上机的重要性,学习这些语言、数据结构与算法并没有什么所谓的捷径,但还是有不少学生依然想要寻求所谓的技巧。 对于初学者来说,数据结构这门课有许多抽象的概念,不太容易掌握。万事开头难,只要你掌握了学习方法和技巧,学任何东西就会变得很容易,学习数据结构也是如此。要想学好数据结构,首先应该有信心,要有战胜困难的决心,不要有畏惧心理,一开始每个人都会遇到困难,重要的是坚持。“路虽远,行则将至;事虽难,做则必成。”腾讯原副总裁吴军博士曾这样说过:“成功的道路并不像想象的那么拥挤,因为在人生的马拉松长路上,绝大多数人跑不到一半就主动退下来了。到后来,剩下的少数人不是嫌竞争对手太多,而是发愁怎样找一个同伴陪自己一同跑下去。因此,我们能够跑得更远,仅仅是因为我们还在跑,如此而已。”任何事情都是这样,学习亦如此。其次就是要掌握好C语言,C语言是基础,因为《深入浅出数据结构与算法:微课视频版》中的算法都是用C语言描述的(其他大多数数据结构图书也采用C语言描述),即使之前没有掌握好C语言也没有关系,只要有C语言基础就行,可以边学数据结构边巩固C语言知识。最后一点就是多上机,勤思考。《深入浅出数据结构与算法:微课视频版》中所有算法都用C语言表述,并给出完整程序,刚开始时只需要把程序看懂,然后多上机调试程序,练习并掌握C语言编程和调试技巧,这样就可以对数据结构中的算法思想融会贯通,真正领会其中的内涵。 通过《深入浅出数据结构与算法:微课视频版》通俗的讲解,加上自己多动手上机实践,学习数据结构与算法就会变得很轻松。 如何使用《深入浅出数据结构与算法:微课视频版》 《深入浅出数据结构与算法:微课视频版》涵盖了数据结构与算法几乎所有知识,案例选取丰富,讲解的过程中引入了作者对数据结构与算法的理解。《深入浅出数据结构与算法:微课视频版》用通俗易懂的语言描述抽象的概念,配套视频针对重点和难点进行讲解,方便读者理解与学习。 《深入浅出数据结构与算法:微课视频版》可以作为学习数据结构与算法的自学教材,也可以作为案头必备的参考书,值得收藏。《深入浅出数据结构与算法:微课视频版》很适合初学数据结构与算法的读者阅读,也可作为参加计算机考研学生的辅导书。 在使用《深入浅出数据结构与算法:微课视频版》过程中,可以边看书,边看视频讲解,视频讲解主要针对《深入浅出数据结构与算法:微课视频版》中的难点和重点,每学完一部分内容,可通过调试《深入浅出数据结构与算法:微课视频版》配套的代码认真领会算法的思想,并思考为什么要这样实现,从而加深对数据结构中概念的理解。 相信在学完《深入浅出数据结构与算法:微课视频版》后,读者会在数据结构和算法方面有很大的收获。预祝大家在学习《深入浅出数据结构与算法:微课视频版》时有一个愉快的旅程。 《深入浅出数据结构与算法:微课视频版》由陈锐、张亚洲、崔建涛、李璞编著,参与编写的人员还有戎璐、闫玉红、范乃梅、韩朴杰、楚杨阳和张祖菡。 致谢 感谢帮助《深入浅出数据结构与算法:微课视频版》问世的所有人,尤其是在清华大学出版社的帮助下,《深入浅出数据结构与算法:微课视频版》才得以顺利出版。 耿国华老师在数据结构与算法领域有很高的造诣,她在数据结构与算法方面给了我很大启发。 最后还要感谢郑州轻工业大学全体同仁在工作上的帮助及对我写作上的关心与支持。 在编写《深入浅出数据结构与算法:微课视频版》的过程中,参阅了大量相关教材、著作,个别案例也参考了网络资源,在此向各位原著者致敬! 由于编写时间仓促,水平所限,书中难免存在一些不足之处,恳请读者不吝赐教。 编 者 2022年月11月