計科專業從事軟件開發多年,在學校里面數據結構這個課程開設過,基本上第一次學習數據結構C語言版本腦子幾乎都是暈乎的,因為搞不懂指針來回指向,后來跟一個前輩請教如何學這東西,先把指針徹底搞明白,然后再學習數據模型,最后一步直接用C語言代碼來實現,開始不要嘗試著都能給搞明白,基礎不夠很難理解透徹,于是專門拿出時間把C語言的指針研究了一遍,由于當時不像現在的互聯網上資料那么多,只能在網上找點抽象的例子進行研究,對指針徹底的了解是看了林銳博士寫的高質量C/C++編程,里面對指針的介紹特別深刻,從此指針也就慢慢理解了。
掌握了指針之后再去搞數據結構,想比之前已經輕松太多了,也不要太著急直接去嘗試搞代碼先把數據模型搞明白,數據模型是連接數據的橋梁,鏈表,隊列,棧,二叉樹等等概念,然后了解每個數據模型的數據結構,以及需要做的動作,在沒寫代碼之前先把這些數據模型要做什么事情搞清楚,然后才去嘗試寫代碼,一般來講第一個模型寫的比較費勁后面就以次類推了,萬事開頭難,數據結構書本主要分為多種編程語言的,有C語言,C++,java版本數據機構,對于這類的書籍講解差異不是很大,沒有必要太過追求那本書,主要是還是模型思想和代碼實現.
學習數據結構有什么用?
現在就拿自己從事的行業來講,C/C++,數據結構算是基本功,設計一個功能模塊除了選擇編程語言之外剩下的就是構造數據模型,在C語言里面叫結構體,在C++里面屬于類,如何設計有時候就會借助數據結構里面的基本模型,常見的編程模型里面隊列和鏈表用的比較多,一般的設計模型中都會涉及到消息隊列,就是典型的一種數據模型,如果有數據結構基礎這些東西理解起來就非???,所謂的編程基礎除了基本的編程語法基礎還有數據模型等基礎。
- 學習數據結構也非常有助于算法理解,再復雜的算法也是由基礎的數據結構算法構造起來的,任何一種算法也不是什么空中樓閣都是無數個小的基礎算法堆積起來的,沒有這些基礎直接從事算法的學習,幾乎是不太可能的事情。
- 懂得常見的數據結構模型,更容易看懂大型的項目的代碼,拿到一份源碼首先要梳理的是功能列表以及里面數據內容的傳遞,懂數據結構對于理解框架非常有好處,要玩大型的項目,先從看懂基礎的代碼開始,研究代碼需要一定的基礎,有了模型概念對于有框架的代碼研究起來快一些。
在剛入行的時候經常聽到老程序員說到,一個新的功能模塊只要數據結構都梳理清楚了,就可以考慮寫代碼了,不要看一個功能模塊里面一個小小的類或者結構體,里面每個變量可能都會串聯著一串功能,所以一個結構體設計完畢了,基本功能模塊也就設計清楚了。
很多初學者都有這么一個不好的習慣,一邊寫著代碼代碼一邊設計思路,這是編程大忌,編程首先要思路清晰,代碼只是把你的思路展示出來,具體的實現好壞就要看基本功了,同樣的功能不同的設計人員設計出來會有截然不同的效果,在性質以及實現效果上都有所差異,本質來講是實力的差異,所以寫代碼的就是為了實現既定的思路,數據結構是設計結構體或者類的基本依據。
希望能幫到你。