学好数据结构的秘诀
《數據結構(C語言實現)》《數據結構與算法詳解》作者
?
作為計算機專業的一名“老兵”,筆者個人學習、研究數據結構和算法已經近10年了,在學習的過程中,也遇到不少問題,為了讓讀者在學習數據結構的過程中少走彎路,下面分享一下筆者個人的一些經驗,談談關于如何學好“數據結構”的一些粗淺認識。
1.明確數據結構的重要性,樹立學好數據結構的信心
數據結構是計算機科學與技術專業的核心課程,不僅僅涉及計算機硬件的研究范圍,并且與計算機軟件的研究有著更為密切的關系,“數據結構”課程還是操作系統、數據庫原理、編譯原理、人工智能、算法設計與分析等課程的基礎。數據結構是計算機專業碩士研究生入學考試的必考科目之一,還是計算機軟件水平考試、等級考試的必考內容之一,數據結構在計算機專業中的重要性不言而喻。
萬事開頭難,學習任何一樣新東西,都是比較困難的,對于初學者而已,數據結構的確是一門不容易掌握的專業基礎課,但你一定要樹立學好數據結構的信心,主要困難無非有兩個,一個是數據結構的概念比較抽象,不容易理解;另一個是沒有熟練掌握一門程序設計語言。面對以上困難,只要我們見招拆招,其實也沒有什么可怕的,不過選擇一本好教材是十分有必要的。
2.熟練掌握程序設計語言,變腐朽為神奇
程序語言是學習數據結構和算法設計的基礎,很顯然,沒有良好的程序設計語言能力,就不能很好地把算法用程序設計語言描述出來,程序設計語言和數據結構、算法的關系就像是畫筆和畫家的思想關系一樣,程序設計語言就是這畫筆,數據結構、算法就是畫家的思想,即便畫家的水平很高,如果不會使用畫筆,再美的圖畫也無法給我們展現出來。
可見,要想學好數據結構,必須至少熟練掌握一門程序設計語言,如C語言、C++語言、Java、C#、Python等。
3.結合生活實際,變抽象為具體
數據結構是一項把實際問題抽象化和進行復雜程序設計的工程。它要求學生不僅具備C語言等高級程序設計語言的基礎,而且還要學會掌握把復雜問題抽象成計算機能夠解決的離散的數學模型的能力。在學習數據結構的過程中,要將各種結構與實際生活結合起來,把抽象的東西具體化,以便理解。例如學到隊列時,很自然就會聯想到火車站售票窗口前面排起的長長的隊伍,這支長長的隊伍其實就是隊列的具體化,這樣就會很容易理解關于隊列的概念,如隊頭、隊尾、出隊、入隊等。
4.多思考,多上機實踐
數據結構既是一門理論性較強的學科,也是一門實踐性很強的學科。特別是對于初學者而言,接觸到的算法相對較少,編寫算法還不夠熟練,俗話說 據熟能生巧,勤能補拙”,因此,只有多看有關算法和數據結構方面的圖書,認真理解其中的算法思想,除了閱讀算法之外,還要自己動手寫算法,并在電腦上上機調試,這樣才能知道編寫的算法是否正確,存在哪些錯誤和缺陷,以避免今后再犯類似錯誤,長此以往,自己的算法和數據結構水平才能快速提高。
有的表面上看是正確的程序,在電腦上運行后才發現隱藏的錯誤,特別是很細微的錯誤,只有多試幾組數據,才知道程序到底是不是正確。因此,對于一個程序或算法,除了仔細閱讀程序或算法判斷是否存在邏輯錯誤外,還需要上機調試,在可能出錯的地方設置斷點,單步跟蹤調試程序,觀察各變量的變化情況,才能找到具體哪個地方出了問題。有時,可能僅僅是誤敲了一個符號或變量,就可能產生錯誤,這種錯誤往往不容易發現,只有上機調試才能發現錯誤。因此,在學習數據結構與算法的時候一定要多上機實踐。
只要能做到以上幾點,選擇一本好的數據結構教材或參考書(最好算法完全用C語言實現,有完整代碼),加上讀者的勤奮,學好數據結構自然不在話下。
?
今天為您推薦兩本精品圖書:
1、數據結構與算法詳解,人民郵電出版社,? ?內容包含數據結構+常用算法+實現+調試
本書內容
本書涵蓋數據結構和算法等內容,是一本計算機專業人士的案頭必備工具書,適合從事C/C++的程序員和科研人員作為詞典進行查閱,也可作為數據結構和算法初學者的參考用書。
本書分數據結構和算法兩部分,其中數據結構涵蓋數據線性表、棧、隊列、串、數組和廣義表、樹、圖等內容,算法部分涵蓋查找、排序、遞推、枚舉、遞歸、貪心、數值、實用算法等內容。
https://item.jd.com/13091684.html
本書選取的案例具有代表性、趣味性和實用性。數據結構除了注重基礎知識的講解,給出了基本運算的實現,案例大部分來自于著名高校的考研題目,代表性強,內容和案例結合性強,注重理論與實踐相結合。算法部分不少案例極具趣味性,例如,“求n個數中的最大者”、“和式分解”、“大牛生小牛問題”巧妙利用遞歸來實現。在算法案例的選取上,還注重實用性,盡量將案例與實際工作生活結合,例如,加油站問題,找零錢問題,大小寫金額轉換。本書案例豐富,以上特點不僅涵蓋了數據結構和算法的各個知識點,還能增加學習的積極性和趣味性。
VC++是一款優秀的C/C++專業開發調試工具,VC++ 6.0及以上版本相互兼容,調試方法區別不大,因此本書最后提供了一個關于如何用VC++6.0調試程序的案例剖析,希望對讀者朋友們有所幫助。
◎本書特點
(1)結構安排合理。概念講解通俗易懂,內容安排和案例選取都是先易后難,循序漸進,注重學習知識的連貫性。
(2)注重基礎知識的講解。在數據結構部分首先是對基礎知識和概念的介紹,然后給出相應的基本運算算法實現,最后是提供典型案例和考研試題的講解及算法實現。
(3)涵蓋個人學習經驗總結。在講解知識點、分析案例及調試程序時,加入了作者自己學習過程中的經驗總結,指出了初學者常犯的錯誤,避免讀者朋友們少走彎路。
(4)案例很多都來自全國著名高校(清華大學、哈爾濱工業大學、西北大學、華中科技大學、西安電子科技大學、北京航空航天大學、上海大學)的考研題目,并給出了完整的算法實現。
(5)提供完整代碼實現,所有代碼均在VC++6.0及以上調試通過。
?
?
2、數據結構(C語言實現)(9787111660668),本書配套資源豐富(電子課件、源代碼、教學大綱、開發工具)
?
?
作者介紹
本書作者具有有多年教學實踐經驗,所著數據結構與算法圖書深受廣大讀者喜愛和好評,被華中科技大學、南京理工大學、北京理工大學、北京航空航天大學、西北大學、北京師范大學、西安交通大學、西安電子科技大學、南京航空航天大學、哈爾濱工業大學、中國科學院大學、南開大學、華南理工大學、合肥工業大學、哈爾濱工程大學等著名高校學生選用。QQ群(992139402)
內容介紹
本書內容編排符合當前高等院校“數據結構”課程的現狀和發展趨勢,知識點涵蓋全面,案例和課后習題豐富,每章均有綜合案例以鞏固對知識點的掌握程度,突出實用性和實踐性。本書共9章,內容包括緒論、線性表、棧與隊列、串、數組與廣義表、樹、圖、查找及排序。本書采用C語言作為數據結構和算法的描述語言。?本書可作為高等院校計算機、軟件工程等相關專業“數據結構”課程的教材,也可作為從事計算機軟件開發、準備考取計算機專業研究生和參加軟考的人員的參考用書。
由于時間倉促,加上本人水平有限,書中難免存在一些不足和錯誤,希望讀者朋友通過郵箱235668080@qq.com與我們聯系,也可通過QQ群(992139402)溝通交流。祝愿各位在閱讀本書的過程中有一個愉快的旅程。
?
?
?
?
總結
- 上一篇: 【转】计算机学会推荐国际学术期刊
- 下一篇: 数据结构与算法详解目录