導(dǎo)學(xué)階段。
最初并沒有直接看書,而是先打算先看視頻,因為視頻比較好理解啊,找視頻的方法就是百度,所以當(dāng)時找到的最好資源就是開課吧的教程,但對小白來說還是夠的,特別基礎(chǔ),講得非常仔細。
這是一個很好的例子,從最開始的陣列、線性表,到后面的棧和隊列,再到更復(fù)雜的二叉樹、圖表、散列表,大概有幾十個視頻,那時是暑假,我按照每天一個視頻的進度來看,看的時候還是要不時練習(xí),這樣對理解會更有幫助。
讀過這個系列的視頻后,我又轉(zhuǎn)而開始啃書,視頻中講的都是數(shù)據(jù)結(jié)構(gòu)的基本知識,而書中除了基本知識外,還有一些算法問題,比如,你學(xué)習(xí)了線性表和鏈表之后,書中就會有相關(guān)的算法問題,例如數(shù)組的元素替換,鏈表的倒置等,
加強學(xué)習(xí)階段
在學(xué)習(xí)完第一個視頻+書本后,我們應(yīng)該已經(jīng)對數(shù)據(jù)結(jié)構(gòu)有了初步的了解,對一些簡單的數(shù)據(jù)結(jié)構(gòu)算法也應(yīng)該有所了解,例如數(shù)據(jù)棧的入棧和出棧,隊列的進組和出組,二叉樹的先序遍歷和后續(xù)遍歷,層次遍歷,圖的最短路徑算法,深度優(yōu)先遍歷等等。
具備一定的基礎(chǔ)后,我們需要從哪些方面加強學(xué)習(xí)呢?
這要看你學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的目的是什么了,比如你學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是為了做算法題,那么你就應(yīng)該把重點放在學(xué)習(xí)算法上,后面我們還會有一篇關(guān)于如何學(xué)習(xí)算法的文章,敬請關(guān)注。
當(dāng)然,當(dāng)時我主要是復(fù)習(xí)考研,所以還是以專業(yè)課歷年真題為主,像我們的卷子里就有很多關(guān)于哈希表,最短路徑算法,KMP算法,Huffman算法和最短路徑算法的應(yīng)用。
對試卷上的一些知識點,我覺得掌握得不太好,就買了《王道數(shù)據(jù)結(jié)構(gòu)》和一些沒啥卵用的書回來看,再次強化了基礎(chǔ)。
而且,由于我們的復(fù)考通常是對一些比較經(jīng)典的算法問題進行考察,所以我又花了大量的時間來學(xué)習(xí)這些算法題,而這些并不是數(shù)據(jù)結(jié)構(gòu)的基本算法,所以可能無法在以前的書籍和視頻中找到答案。
所以我又在網(wǎng)上搜到了另一個系列的視頻“小甲魚的數(shù)據(jù)結(jié)構(gòu)視頻”,里面除了講解數(shù)據(jù)結(jié)構(gòu)外,還講解了更多的經(jīng)典算法題目,比如八皇后問題、漢諾塔問題、馬踏棋問題、商旅問題等等,這些對于初學(xué)者來說真的是很難的,通過視頻學(xué)習(xí)效果更好。
實習(xí)階段
紙上談兵終覺淺薄,絕知此事要躬身。大家都知道,算法題和數(shù)學(xué)題一樣,需要多加練習(xí),而且考研時還要手寫算法,所以我經(jīng)常在紙上寫(抄)算法,別說你,就是抄,多抄幾遍也有助于理解。
有許多基本算法,如層次遍歷、深度優(yōu)先遍歷、廣度優(yōu)先遍歷、多寫一些遍歷,以及稍微復(fù)雜一些的Dejerstra算法等,如果不多寫一些遍歷,你真的記不住。
當(dāng)然,除了寫在紙上,更好的方法是在電腦上敲鍵盤,寫Java用Java,寫C++用C++寫,總之,就是用自己擅長的語言實現(xiàn),尷尬的是,我當(dāng)時只會寫c,所以只能老老實實用devc++編寫簡單的c語言程序。
此時,我們也算是學(xué)到了數(shù)據(jù)結(jié)構(gòu)的基本知識,至少了解了每一種數(shù)據(jù)結(jié)構(gòu)的特征,會寫通用的數(shù)據(jù)結(jié)構(gòu)算法。
推薦資源
書籍。
如果你正準備考研,那么“天勤數(shù)據(jù)結(jié)構(gòu)”“王道數(shù)據(jù)結(jié)構(gòu)”這兩本書可別錯過。
嚴蔚敏《數(shù)據(jù)結(jié)構(gòu)與C語言版本》是一本大學(xué)本科計算機專業(yè)常用的教材,可查閱,官方也有配套教學(xué)錄像。
《大話數(shù)據(jù)結(jié)構(gòu)》官方教材大家都懂,比較不接地氣,這本書對很多新手來說是比較適合入門的。
如果你是學(xué)Java的,并且想要一本Java語言描述的數(shù)據(jù)結(jié)構(gòu)方面的書,你可以試試這本,但是這本書明顯比較復(fù)雜,而且不適合作為入門。
聯(lián)系客服