資料結構如何自學?

2020-07-16 10:05:28
自從資料結構教學發布以來,很多讀者向我詢問應該如何自學資料結構,或者怎麼才能學好資料結構和演算法?本節將結合我的個人經驗,給讀者介紹一些學習資料結構和演算法的方法,幫大家規避一些學習資料結構和演算法過程中可能會踩的坑。

首先我認為,學習資料結構和演算法有一個很重要的前提,就是至少熟練掌握一門程式語言。學習資料結構和演算法,實踐是非常重要的,如果僅僅是空有理論而不實踐,反復學多少遍都沒用。

本教學以 C 語言作為教學語言,當然讀者也可以在掌握 C++、Java、Python 等語言的基礎上學習資料結構和演算法。因為無論是資料結構還是演算法,它教會我們的是解決問題的思想,並不掛靠某一門具體的程式語言。換句話說,在掌握任何一門程式語言的基礎上,都可以學習資料結構和演算法。

其次對於初學者來說,好的學習資源是非常重要的。要知道,學習資料結構需要讀者有一定的空間想象能力,所以強烈建議讀者在看文字資料的同時,再找一套相應的視訊資料,兩者結合來學習,往往會事半功倍。

那麼,有哪些不錯的學習資源呢?我個人強烈推薦嚴蔚敏老師的《資料結構(C語言版)》以及她錄製的一整套資料結構視訊資料。如果讀者剛剛接觸資料結構和演算法,可以跟隨本教學學習,同時配以嚴蔚敏老師錄製的視訊資料。

本教學就是以嚴蔚敏老師的資料結構為原型進行編寫的,和後者相比,本教學的語言通俗易懂,同時配有完整的 C 語言程式碼,非常適合初學者入門使用。

另外,市面上還有很多不錯的學習資料,例如《大話資料結構》、《資料結構與演算法分析》等,同時慕課(mooc)上也有很多講解資料結構和演算法的視訊資料,這裡不再一一舉例。

除了熟練精通一門程式語言、有一套不錯的學習資料之外,最重要的是找到一個好的學習方法。其實資料結構和演算法並不難,之所以有讀者認為它很難,是因為你的學習方法不對。

在這裡,我把自己的學習方法推薦給大家,可以總結為 6 個字:多動筆、多動手。

所謂“多動筆”,在學習資料結構和演算法的過程中,要邊學習邊畫圖。因為,對於資料結構中的儲存結構來說,尤其是樹結構和圖結構,儲存結構確實比較複雜,僅靠空間想象難免會有紕漏,而通過親手畫圖往往能避免很多“坑”。

以學習連結串列(後續章節會做詳細講解)為例,如果我們想象不到它是怎樣儲存資料,就應該嘗試動手將它畫出來,如圖 1 所示:

畫鏈表
圖 1 畫連結串列