数据结构学习感悟
? ? ? 數據結構毫無疑問的是在編程上非常重要的一部分內容,在我的學習過程中,我經歷了迷茫,入門,熟悉等階段,我以個人經歷為例子,講解一下我對數據結構從懼怕到熟悉的過程。
? ? ? 我是一個學習編程主動性很強的人,大二上學期,我知道了數據結構這門課程對于編程的重要性,加上自己自學完了C語言,就開始在網絡上查找資料學習數據結構了,一開始光靠自己看,進度真的很慢很慢,一開始很難理解他為什么是一段一段的代碼,后來經過查閱資料和看視頻才慢慢入了門,但也只是對著書上的代碼知道他要干什么,自己去編寫是完全做不到的。
? ? ? 階段一
? ? ? 第一階段自學的時候,我對于數據結構的感覺就是難,現在回頭看,發現其實當初的難,只是自己的懼怕和懈怠,最大的原因是自己的不重視,我當時只在英語課上看一看數據結構,沒辦法做到靜心去思考問題,加之自己認為這是我自己給自己的任務,不完成也沒有關系,所以經常遇到難得就不愿意花費時間去思考,但是這段經歷也給了我警示,現在的我對于自己學習的東西也會上一百分的心去學習,不會在讓自己一知半解了。 ?
? ? ? ?階段二
? ? ? 后來報了一個關于教學的培訓班,不得不說的是學習上有人講和沒有人講,效率差別真的很大,而且練習和不練習的差別也很大,自己學習的時候,看到那些代碼就不想動手去敲,加上還有課業的負擔,后來我一整個寒假待在了補習的地方,也沒有課業的負擔,就感覺當初深奧難懂的數據結構的代碼,概念等等這些東西原來都是這么的簡單,加上自己在課下不斷地編寫數據結構相關的代碼,很快的就把這些知識都串聯熟悉了起來,能夠靠自己寫出相應的數據結構了。這一段經歷給我最大的感觸就是上手練習,真的是很重要很重要的一個環節,哪怕你開始不是很懂,基礎不是很牢固,那你可以對著書一行一行的抄代碼,在抄代碼的過程中,你會熟悉數據結構的框架,畢竟比如鏈表這些數據結構他們都是有相應固定的結構體結點和操作的,甚至當你完全熟悉了一個的時候,對于別的的理解你也會加快很多,所以可以試著先去弄透鏈表的所有結構和相應的函數集,然后在學習別的數據結構的時候你就可以把之前理解鏈表的模式套進去,這樣學習會加快你理解的速度,不要對鏈表都還一知半解的時候就著急的去看棧這些東西,學習要一步一步踏實的走。
? ? ? 如果說通過自學的階段我對數據結構有了個大致的概念,那么第二階段的訓練對我而言是對數據結構真正的入門,通過大量的練習和編程,我很快速的熟練了所有數據結構的實現,先不說是否深入理解了什么東西,但是最起碼我可以靠著自己去實現自己的數據結構了,而且還可以在原先的基礎上根據自己的需求去增改一些東西,面對許多數據結構的題目也可以得心應手的解決,算是真真正正的能用數據結構了,對于學習方面的建議真的就是多練,一定要多練,不管理解不理解,先敲了再說,不要想著偷懶,你敲得代碼也不會白費你的努力。
? ? ? 階段三
? ? ? 然后,我覺得對數據結構最后的階段是理解,雖然我報了培訓班,但是那也是加強型的走馬觀花的練習,深入的概念理解學習還是要靠學校的學習和自己的聯系,現在的我正在努力的攻克這一難點,以前的我對于數據結構,如果題目讓我去實現一個東西,只要給我時間,那我有自信一定能夠做出來,題目要求我用鏈表,我就用鏈表,題目要求我用廣義表,我就用廣義表,我覺得我能夠實現它,那就足夠了,卻從不知道去想一想他為什么讓我用鏈表,我用數組行不行?我之前對于學習有一個不好的心態就是做題為準,后來上學校的數據結構課,這已經算是我第三遍的學習了,我開始不是很在意,后來我發現雖然我已經算是學過兩遍的人了,但是老師講概念這些的時候有的我還不是很熟,也就是說這個東西的特性,比如鏈表,我可以靠之前的學習說出他的優點和缺點,但是他的優點和缺點決定了他那些應用的范疇,我倒是很少考慮,我覺得上課完了我最大的經歷是我思想上的改觀,以前的我會以直接實現功能為主的去使用數據結構,現在的我會多去想一想,他為什么要用這個數據結構?我換一個行不行?換一個以后他的那些方面會得到優化,又會喪失那些自己的特性?這樣做是否值得?? ? ? 數據結構是沒有標準答案的,就和老師舉得例子一樣,一個迷宮問題,走過的路用雙向鏈表可以存儲,用棧可以存儲,那么哪一個的存儲效率更高呢?如果非讓你用隊列這些結構去存儲你又該怎么實現能夠使解題的思路最為高效清晰呢?這些都是問題,而且都是我們實際工作后也肯定會問道的問題,這就需要我們對這些數據結構的特性去做更深一步的理解了。
? ?
?? 最后對于老師教學方面的個人感悟,我覺得老師在學生完成普通課業的情況下給予相應的額外任務也是能夠幫助學生去更加深入理解數據結構的一個有很大益處的舉動,因為學生的個人進度是不一樣的,有的已經完成了自己的工作,那么還有主動性去學習一些更新的更難得東西的時候,這時候真的需要有人給他們指一個方向,還有就是學生對于自己哪方面不足也是很難去發現了,就比如我對于靜態鏈表的實現在之前學習的時候就不是很上心,就感覺已經有鏈表了為什么還要用靜態鏈表?后來老師跟我說讓我用靜態鏈表做一個約瑟夫環,我才發現,我好像對靜態鏈表掌握的不熟悉,后來是通過看書才實現了相應的工作,通過這樣的工作我就發現了自己難以發現的薄弱的環節,也加深了自己對于不同數據結構的理解,我個人感覺自己是獲益匪淺的。
? ? ? ??
? ? ??? ? ? ??
? ? ? ??
總結
- 上一篇: NVIDIA-CUDA编程初探
- 下一篇: asp.net学习之再论sqlDataS