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