官术网_书友最值得收藏!

1.7 學(xué)好數(shù)據(jù)結(jié)構(gòu)的秘訣

作為計算機專業(yè)的一名“老兵”,筆者從事數(shù)據(jù)結(jié)構(gòu)和算法的研究已經(jīng)20余年了,在學(xué)習(xí)的過程中遇到過很多問題,在解決問題時積累了一些經(jīng)驗,為了讓讀者在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的過程中少走彎路,本節(jié)分享一些筆者在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法時的經(jīng)驗,希望對讀者的學(xué)習(xí)有所幫助。

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è)計語言,變腐朽為神奇

程序設(shè)計語言是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法的基礎(chǔ),很顯然,沒有良好的運用程序設(shè)計語言的能力,就不能很好地把算法用程序設(shè)計語言描述出來。算法思想固然重要,但它最終必須通過程序設(shè)計語言來實現(xiàn),否則算法對程序開發(fā)人員來說毫無意義。程序開發(fā)人員的任務(wù)就是實現(xiàn)這些算法,將它變成可運行的軟件,因此學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法必須熟練掌握至少一門高級程序設(shè)計語言,如Java、C、Python等。程序設(shè)計語言和數(shù)據(jù)結(jié)構(gòu)、算法的關(guān)系就像是畫筆和畫家的關(guān)系一樣,程序設(shè)計語言就是畫筆,數(shù)據(jù)結(jié)構(gòu)、算法就是畫家的思想,即便畫家的水平很高,如果不會使用畫筆,再美的圖畫也無法展現(xiàn)出來。

3.結(jié)合生活實際,變抽象為具體

數(shù)據(jù)結(jié)構(gòu)是一項把實際問題抽象化和進行復(fù)雜程序設(shè)計的工程。它不但要求學(xué)生具備Java、C、Python等高級程序設(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é)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法時,一方面,需要多看有關(guān)算法和數(shù)據(jù)結(jié)構(gòu)的圖書,認真理解其中的思想,多做習(xí)題,不斷鞏固自己對一些概念和性質(zhì)的理解;另一方面,需要自己動手寫算法,并在計算機上調(diào)試,這樣才能知道算法的思路是否正確,編寫出的算法是否能夠正確運行,存在哪些錯誤和缺陷,以避免今后再犯類似的錯誤,只有這樣長期堅持下去,自己的算法和數(shù)據(jù)結(jié)構(gòu)水平才能快速提高。

有的程序表面上看是正確的,在計算機上運行后才發(fā)現(xiàn)有隱藏的錯誤,特別是很細微的錯誤,只有多試幾組數(shù)據(jù),才能知道程序是否正確。因此,對于一個程序或算法,除了仔細閱讀程序或算法、判斷是否存在邏輯錯誤外,還需要上機調(diào)試,在可能出錯的地方設(shè)置斷點,單步跟蹤調(diào)試程序,觀察各變量的變化情況,才能找到具體哪個地方出了問題。有時,可能只是誤輸入了一個符號或把一個變量誤寫成另一個變量,就可能產(chǎn)生意想不到的錯誤結(jié)果;還有本來希望將一個棧中的棧頂元素返回,但是實際上在返回之前已經(jīng)把該元素刪除了,這樣就無法得到正確的輸出結(jié)果。這些錯誤往往不容易發(fā)現(xiàn),只有上機調(diào)試才能發(fā)現(xiàn)。因此,在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的時候,一定要多上機實踐。通過上機實踐,不僅可以加深對理論知識的掌握程度,還能提高編程語言的應(yīng)用技巧和調(diào)試水平,這是提高自身綜合算法能力的過程。

只要能做到以上幾點,選擇一本好的數(shù)據(jù)結(jié)構(gòu)教材或參考書(算法最好用Java、C、Python等語言實現(xiàn),有完整代碼),加上讀者的勤奮,學(xué)好數(shù)據(jù)結(jié)構(gòu)自然不在話下。

思政元素:在軟件開發(fā)過程中,特別是在實現(xiàn)算法時,要保證算法的正確性和高效性。這些都考驗著我們對算法思想的理解和對編程技術(shù)的掌握情況,一個小小的細節(jié)就可能決定算法是否正確,而找出其中的錯誤除了要求我們熟悉算法的思想外,還要求我們精通Java等語言及其調(diào)試技術(shù)。在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的過程中,我們要以在各行各業(yè)做出卓越貢獻的先進典型代表為榜樣,學(xué)習(xí)他們精益求精、追求卓越的工匠精神和報國熱情。例如導(dǎo)彈之父錢學(xué)森,兩彈元勛鄧稼先、錢三強、趙九章、孫家棟等,計算機漢字激光照排技術(shù)創(chuàng)始人王選,青蒿素治療人類瘧疾發(fā)明者屠呦呦,王碼五筆發(fā)明者王永民,華為5G技術(shù),比亞迪的王傳福,等等,正是他們經(jīng)歷無數(shù)次失敗,在工作中一絲不茍、精益求精,始終堅持科學(xué)真理與創(chuàng)新精神,才會有我國科學(xué)技術(shù)日新月異的飛速發(fā)展。在我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時,一是要學(xué)習(xí)利用數(shù)據(jù)結(jié)構(gòu)知識進行抽象建模的方法,二是要掌握算法設(shè)計思想,三是要用Java、C、Python等語言實現(xiàn)算法,在算法實現(xiàn)過程中理解算法,熟悉調(diào)試技術(shù),反復(fù)練習(xí),才能百煉成鋼。“科學(xué)的精神不是猜測、盲從、迷信、揣摩,而是通過真真實實的實踐來研究和驗證,從而得到相應(yīng)的客觀結(jié)果模型的好壞,協(xié)同產(chǎn)業(yè)界來實踐相關(guān)的理念和模型。

主站蜘蛛池模板: 广饶县| 皋兰县| 泉州市| 无锡市| 来宾市| 紫阳县| 太仆寺旗| 石狮市| 肇庆市| 天峻县| 怀安县| 东宁县| 仙居县| 商城县| 湘阴县| 南雄市| 普安县| 永仁县| 城口县| 郸城县| 马公市| 晴隆县| 肥城市| 江陵县| 开江县| 乌兰浩特市| 宜春市| 娄烦县| 乳源| 苍梧县| 阿勒泰市| 渑池县| 昆明市| 延边| 绥棱县| 德清县| 祁东县| 天镇县| 鄂伦春自治旗| 台中市| 马鞍山市|