色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c語言沒有學(xué)好,如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?

老白2年前29瀏覽0評論

題主應(yīng)該先厘清兩個概念:編程語言和數(shù)據(jù)結(jié)構(gòu)。

  1. 數(shù)據(jù)結(jié)構(gòu)的本質(zhì)是一種思維,它的目標(biāo)是將現(xiàn)實世界中各種各樣的數(shù)據(jù)放入到內(nèi)存中,在內(nèi)存中操作這些數(shù)據(jù),并盡可能優(yōu)化這些存儲方案和操作方法。

  2. 編程語言是將數(shù)據(jù)結(jié)構(gòu)這種思維實現(xiàn)出來的一種工具。

而學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)最重要的就是邊學(xué)邊做,只學(xué)習(xí)書上的思維方法不用編程語言寫出來的話,效率將非常低下,就好比學(xué)習(xí)數(shù)據(jù)只看例題不做題,其實往往收獲甚微。既然要邊學(xué)習(xí)邊實踐,那么在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)之前,掌握一些基礎(chǔ)的編程知識是很有必要的。


這里把個人的一些經(jīng)驗分享給題主。

零、快速學(xué)習(xí)基礎(chǔ)C語言

前面說道,在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)之前,應(yīng)該掌握一定的編程知識,但是不必精通某個語言,知道基本語法即可。題主可以去中國大學(xué)MOOC,或者網(wǎng)易云課堂上,找一個自己喜歡的課程,跟著視頻把基礎(chǔ)的語言過一遍,這里推薦浙江大學(xué)翁凱老師的C語言課程。鏈接:https://mooc.study.163.com/course/1000002011?tid=2001530003#/info

一、記住算法思想(是什么)

這一部分的目標(biāo)是,你能給人說明白,什么是”堆棧“,什么是”平衡二叉樹“等。題主應(yīng)當(dāng)形成長久記憶,存儲到你的”硬盤“里,而不僅僅在學(xué)習(xí)的時候過了一遍你的”內(nèi)存“。

第一步,記住數(shù)據(jù)結(jié)構(gòu)最直觀的東西。這種直觀的記憶會在不知不覺中就完成,但為了更好的記住,還需去刻意記憶和偶爾的復(fù)習(xí)。

第二步,記憶該數(shù)據(jù)結(jié)構(gòu)的定義與性質(zhì)與特點等。例如,學(xué)習(xí)哈夫曼樹的時候。哈夫曼樹的定義:WPL(帶權(quán)路徑長度)最小的二叉樹;哈夫曼樹的特點:(1)沒有度為1的結(jié)點(2)n個葉子結(jié)點的哈夫曼樹共有2n-1個結(jié)點(3)哈夫曼樹的任意非葉節(jié)點的左右子樹交換后仍是哈夫曼樹。關(guān)于”數(shù)據(jù)結(jié)構(gòu)“,需要記憶的內(nèi)容也需要自己在其中慢慢領(lǐng)悟。

二、進(jìn)行大量相關(guān)編程練習(xí),用編程語言去實現(xiàn)某一數(shù)據(jù)結(jié)構(gòu)上的算法(怎么辦)

必須承認(rèn),理解一個算法很容易,很容易在紙上去模擬一個算法的實現(xiàn)過程。但,具體實現(xiàn),則是另一回事。一定得先自己思考,然后再去看書中給的編程語言實現(xiàn)。在我看來,這一過程已經(jīng)不屬于“數(shù)據(jù)結(jié)構(gòu)與算法”的內(nèi)容了。而是你綜合素質(zhì)的體現(xiàn),如何真正理解問題和用編程技巧實現(xiàn),很考驗自己。

三、”記住“特定情景下,利用某一特定的數(shù)據(jù)結(jié)構(gòu),去解決問題(為什么+怎么辦)

每介紹一種數(shù)據(jù)結(jié)構(gòu),浙大數(shù)據(jù)結(jié)構(gòu)與算法的MOOC課程都會有一個實際問題來作為“引子”,回答了“這種數(shù)據(jù)結(jié)構(gòu)為什么會出現(xiàn)”。有的是為了實現(xiàn)特定的操作,有的是為了時間和空間上(大部分考慮的是時間復(fù)雜性)效率的更高。這些東西,我們也須理解記憶。

最終,希望題主能自己根據(jù)自己的理解,針對某個問題,熟練的給出下圖這樣的解決方案,我認(rèn)為就算是入門了。