这是一位粉丝朋友给我的私信,今天就他这个问题好好聊聊。
先学C语言在学数据结构和算法
先说答案建议先学C语言,掌握基本的语法基础后,再学数据结构与算法,C语言编程与数据结构和算法这两个完全是两个东西了。
学习数据结构和算法有一个很重要的前提,就是至少熟练掌握一门编程语言,编程语言掌握肯定越多越好,但是至少要掌握以下几点,因为数据结构实现,链表、图、等都会用到指针、结构体、指针函数等,堆栈、队列等需要掌握内存知识。
C语言和数据结构与算法的关系
C语言编程只是一种编程语言,同样的还有java、golang、python、php....等都是编程语言,它只是你实现功能的一种工具。
数据结构与算法不单单是C语言会有的,很多开发语言都会用到数据结构与算法,数据结构与算法不会和任何一种语言绑定死,它更像是一种抽象的方法、设计、思路。用来帮助你更好、更快、更轻松的使用“工具”。
两者重要性
编程语言
先说说C语言,首先编程语言至少要会一门,因为毕竟他是工具,是你用来实现功能的基础,所以基础知识就非常重要了,一定要好好理解、掌握基础知识,后面所学的扩展知识基本上都是在基础之上的一层封装实现。
就好比学完java基础后,我们还会学习spring框架,但是你只要查看spring框架的源码,你会发现它底层就是用java基础来封装的,如果你基础都不扎实,那还怎么看得懂框架源码呢?
数据结构与算法
数据结构与算法我认为是开发人员的核心竞争力了,这个更是重中之重了,优秀的研发人员实现功能往往不是简单的功能能运行就行了,而是怎么做到能更快、成本更低、更稳定的实现一个功能,这时数据结构与算法就体现了它的强大之处!通过学习并理解数据结构与算法,你会发现一个功能的实现可以采用多种实现方案,通过分析时间成本、空间成本选择一个贴切业务的方案。
学习路线图
学习书籍
C语言
《C程序设计语言》
《 C Primer Plus》
《C与指针》
《征服C指针》
《C专家编程》
《C陷阱与缺陷》
C++
《 C++ Primer 中文版 第五版 》
Effective 三部曲:《Effective C++》、《More Effective C++》、《Effective STL》
《STL源码剖析》
《 深入探索C++对象模型 》
《提高 C++ 性能的编程技术》
《C++语言设计与演化》
《C++沉思录》
《C++标准程序库》
《C++模板元编程》
数据结构与算法
《大话数据结构》
《啊哈!算法》
《漫画算法:小灰的算法之旅》
《剑指Offer》
《程序员代码面试指南》
《编程珠玑》
《编程之美》
《挑战程序设计竞赛》
《算法(第四版)》
《算法导论》
数据库
《 MySQL必知必会》
《MySQL是怎样运行的》
《 高性能MySQL》
《 MySQL技术内幕: InnoDB存储引擎 》
《 Redis设计与实现 》
《Redis实战》
《 数据库系统实现》
学习视频
****《郝斌C语言自学教程》****
比较老的视频,但是讲的很详细,适合小白。
小甲鱼的C语言教学,B站编程语言最能打的教学视频之一。
虽然比较老,但是讲的比较详细,容易理解,对初学者非常友好。
课程是由陈越与何钦铭共同录制,b站与慕课网都有,慕课网比较清晰一些
课程由青岛大学王卓老师录制,非常适合考研,讲的题比较多。