
這是一位粉絲朋友給我的私信,今天就他這個問題好好聊聊。
先學(xué)C語言在學(xué)數(shù)據(jù)結(jié)構(gòu)和算法
先說答案建議先學(xué)C語言,掌握基本的語法基礎(chǔ)后,再學(xué)數(shù)據(jù)結(jié)構(gòu)與算法,C語言編程與數(shù)據(jù)結(jié)構(gòu)和算法這兩個完全是兩個東西了。
學(xué)習數(shù)據(jù)結(jié)構(gòu)和算法有一個很重要的前提,就是至少熟練掌握一門編程語言,編程語言掌握肯定越多越好,但是至少要掌握以下幾點,因為數(shù)據(jù)結(jié)構(gòu)實現(xiàn),鏈表、圖、等都會用到指針、結(jié)構(gòu)體、指針函數(shù)等,堆棧、隊列等需要掌握內(nèi)存知識。
C語言和數(shù)據(jù)結(jié)構(gòu)與算法的關(guān)系
C語言編程只是一種編程語言,同樣的還有java、golang、python、php....等都是編程語言,它只是你實現(xiàn)功能的一種工具。
數(shù)據(jù)結(jié)構(gòu)與算法不單單是C語言會有的,很多開發(fā)語言都會用到數(shù)據(jù)結(jié)構(gòu)與算法,數(shù)據(jù)結(jié)構(gòu)與算法不會和任何一種語言綁定死,它更像是一種抽象的方法、設(shè)計、思路。用來幫助你更好、更快、更輕松的使用“工具”。
兩者重要性
編程語言
先說說C語言,首先編程語言至少要會一門,因為畢竟他是工具,是你用來實現(xiàn)功能的基礎(chǔ),所以基礎(chǔ)知識就非常重要了,一定要好好理解、掌握基礎(chǔ)知識,后面所學(xué)的擴展知識基本上都是在基礎(chǔ)之上的一層封裝實現(xiàn)。
就好比學(xué)完java基礎(chǔ)后,我們還會學(xué)習spring框架,但是你只要查看spring框架的源碼,你會發(fā)現(xiàn)它底層就是用java基礎(chǔ)來封裝的,如果你基礎(chǔ)都不扎實,那還怎么看得懂框架源碼呢?
數(shù)據(jù)結(jié)構(gòu)與算法
數(shù)據(jù)結(jié)構(gòu)與算法我認為是開發(fā)人員的核心競爭力了,這個更是重中之重了,優(yōu)秀的研發(fā)人員實現(xiàn)功能往往不是簡單的功能能運行就行了,而是怎么做到能更快、成本更低、更穩(wěn)定的實現(xiàn)一個功能,這時數(shù)據(jù)結(jié)構(gòu)與算法就體現(xiàn)了它的強大之處!通過學(xué)習并理解數(shù)據(jù)結(jié)構(gòu)與算法,你會發(fā)現(xiàn)一個功能的實現(xiàn)可以采用多種實現(xiàn)方案,通過分析時間成本、空間成本選擇一個貼切業(yè)務(wù)的方案。
學(xué)習路線圖
學(xué)習書籍
C語言
《C程序設(shè)計語言》
《 C Primer Plus》
《C與指針》
《征服C指針》
《C專家編程》
《C陷阱與缺陷》
C++
《 C++ Primer 中文版 第五版 》
Effective 三部曲:《Effective C++》、《More Effective C++》、《Effective STL》
《STL源碼剖析》
《 深入探索C++對象模型 》
《提高 C++ 性能的編程技術(shù)》
《C++語言設(shè)計與演化》
《C++沉思錄》
《C++標準程序庫》
《C++模板元編程》
數(shù)據(jù)結(jié)構(gòu)與算法
《大話數(shù)據(jù)結(jié)構(gòu)》
《啊哈!算法》
《漫畫算法:小灰的算法之旅》
《劍指Offer》
《程序員代碼面試指南》
《編程珠璣》
《編程之美》
《挑戰(zhàn)程序設(shè)計競賽》
《算法(第四版)》
《算法導(dǎo)論》
數(shù)據(jù)庫
《 MySQL必知必會》
《MySQL是怎樣運行的》
《 高性能MySQL》
《 MySQL技術(shù)內(nèi)幕: InnoDB存儲引擎 》
《 Redis設(shè)計與實現(xiàn) 》
《Redis實戰(zhàn)》
《 數(shù)據(jù)庫系統(tǒng)實現(xiàn)》
學(xué)習視頻
****《郝斌C語言自學(xué)教程》****
比較老的視頻,但是講的很詳細,適合小白。
小甲魚的C語言教學(xué),B站編程語言最能打的教學(xué)視頻之一。
雖然比較老,但是講的比較詳細,容易理解,對初學(xué)者非常友好。
數(shù)據(jù)結(jié)構(gòu)-浙江大學(xué)
課程是由陳越與何欽銘共同錄制,b站與慕課網(wǎng)都有,慕課網(wǎng)比較清晰一些
數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)
課程由青島大學(xué)王卓老師錄制,非常適合考研,講的題比較多。