數據結構是計算機考研必考項,其重要性可想而知。
這裏主要想記錄並跟大家分享一下我的數據結構艱難學習史。
數據結構確實相對來說有點難,所以數據結構的學習也必定要經歷一個相對漫長的過程,尤其是在沒有人指導交流時,這個時候尤其要內心堅定的堅持下去,熬過最初的幾天慢慢就好了,大家一定要加油哦。
學習數據結構和算法,我覺得應該是一個由簡到繁再由繁到簡的過程,碰到某個小類型的時候,剛開始不要急着去寫代碼,首先分析這個類型或者這種結構的內核,理解了這個內核之後,再去理解這種結構就相對容易一點了。
-
學習資源:
1.書籍:數據結構(c語言版) 嚴蔚敏 吳偉民 編著
2.視頻:中國大學MOOC 浙江大學 數據結構 陳越 何茂銘
3.題集:PAT/PTA/OJ 數據結構 中文集/英文集PS:我是陳越姥姥的小迷妹~
-
小小建議:
1.把書上的重要代碼基本都親自敲一遍
PS:代碼一定一定一定要親自過一遍或者多遍,程序員哪有不敲代碼的對吧,有時候簡單的看看,眼睛覺得我會了,但是手和心不一定覺得我會了,親自敲代碼敲一遍之後,其實你就會發現很多細節上的問題,那個手感要練起來~
2.代碼風格通俗易懂 添加必要的註釋
PS:敲代碼要養成一個良好的習慣,最終需要達到的效果就是你過了很長時間之後再看能夠不費勁就看懂那種,或者別人看你的代碼能夠看得懂,所以代碼需要必要的註釋,但註釋也不要太多,我剛開始的代碼註釋就太多了~
3.敲完一個小類型的代碼 就去做一做相應的習題
PS:代碼敲完了之後,並不代表這個你就掌握了,爲了鞏固一下,可以去PAT/PTA/OJ上去找相應的習題練習練習,一般一個小類型的敲完了就去練習效果比較好~
下面就是我自己學習數據結構時敲的代碼,我在前面寫博客的時候也沒有專門的講解,都是直接上的代碼,代碼後面附有運算測試結果,都是可以運行的代碼哦~
PS:這個的代碼風格不是很好,因爲是剛開始的時候寫的,東改西改的,註釋也有點多,僅供參考~
點一下右邊的藍色字體的超鏈接就可以看到對應的代碼了
《Data Structure — SequenceList》:SequenceList
《Data Structure —SinglyLinkedList》:SinglyLinkedList
《Data Structure — ExtenLinkedList》:ExtenLinkedList
《Data Structure — Polynomial》:Polynomial
《Data Structure — Polynomial2.0》:Polynomial2.0
PS: Polynomial和Polynomial2.0的區別在於Polynomial只寫了一個AddPolyn,並且是Pa和Pb相加最後加到Pa上,而Polynomial2.0是寫了一個AddPolyn和一個SubtractPolyn和一個MultiPlyPolyn,並且三個都是Pa和Pb最後實現運算結果在Pc上。
《PAT 7-2 終極版》:多項式運算的小測試
《Data Structure —SequenceStack》:SequenceStack
《SequenceStack 2.0 Amazing》:SequenceStack 2.0 Amazing
PS:SequenceStack和SequenceStack 2.0 Amazing的區別在於SequenceStack是寫的棧的基本實現,SequenceStack 2.0 Amazing是寫的棧的應用,包括Conversion和LineEdit功能實現。
《EvaluateExpression》:EvaluateExpression
《EvaluateExpression 2.0》:EvaluateExpression 2.0
PS:EvaluateExpression和EvaluateExpression 2.0的區別在於,在寫棧的應用EvaluateExpression的時候,運算數和運算符使用的是同一種類型的棧char,最後在運算的時候char溢出了,最終在處理這個問題的時候,運算數用的就是int類型的棧,運算符用的就是char類型的棧,歸納總結出來就是EvaluateExpression 2.0了。
《Data Structure — LinkQueue》:LinkQueue
《Data Structure — CycleQueue》:CycleQueue
《Data Structure — SqBinaryTree》:SqBinaryTree
《Data Structure — LinkedBinaryTree》:LinkedBinaryTree
《二叉樹非遞歸前中後序遍歷和層次遍歷》:二叉樹非遞歸前中後序遍歷和層次遍歷
《二叉樹遞歸層次遍歷和前中後序遍歷》:二叉樹遞歸層次遍歷和前中後序遍歷
PS:二叉樹的層次遍歷和前中後序遍歷是重點!!!
《Data Structure — MGraph》:MGraph
《Data Structure — ALGraph》:ALGraph
PS:鄰接矩陣和鄰接表的DFS和BFS是重點!!!
附上最後的總結(個人認爲是精華部分):
左邊是該類型的內核 右邊是該類型的所有函數
Linear List:
ExtenLinkedList:
Polynomial:
SequenceStack:
Queue:
BinaryTree:
Graph:
我一直在想怎麼用最簡單的方法來理解這些數據結構,做這個思維導圖我盡力了!!!