-
1 # BAT筆試面試
-
2 # 子子健康
c語言沒學會,建議在重學一下,主要是指標的應用,指標就是地址的操作,然後自己寫寫快速希爾冒泡歸併排序,在寫寫二分法查詢,就大概理解c語言了,然後學習使用結構體和指標理解資料結構
-
3 # 在搬磚
學資料結構需要懂一門語言實踐,不一定非的是c語言,另外c語言內容不多,你不需要把c++也學了,再看下就行了
-
4 # 玩著學程式設計
學習C語言的過程中,兩個重要知識點是需要特別的關注的,指標和結構體,把這兩方面的知識熟練應用了,再去看資料結構會更容易理解。
先把C語言的基礎夯實,在學習資料結構。學習C語言的時候,看的是“如鵬網”的《C語言也能幹大事》影片教程,透過開發超級瑪麗,吃金幣,飛機大戰等經典小遊戲以及用C語言來開發網站等來講解C語言的基礎知識點,沒想到C語言還可以這麼學,
-
5 # 程式碼君
題主應該先釐清兩個概念:程式語言和資料結構。
資料結構的本質是一種思維,它的目標是將現實世界中各種各樣的資料放入到記憶體中,在記憶體中操作這些資料,並儘可能最佳化這些儲存方案和操作方法。
程式語言是將資料結構這種思維實現出來的一種工具。
而學習資料結構最重要的就是邊學邊做,只學習書上的思維方法不用程式語言寫出來的話,效率將非常低下,就好比學習資料只看例題不做題,其實往往收穫甚微。既然要邊學習邊實踐,那麼在學習資料結構之前,掌握一些基礎的程式設計知識是很有必要的。
這裡把個人的一些經驗分享給題主。
零、快速學習基礎C語言
前面說道,在學習資料結構之前,應該掌握一定的程式設計知識,但是不必精通某個語言,知道基本語法即可。題主可以去中國大學MOOC,或者網易雲課堂上,找一個自己喜歡的課程,跟著影片把基礎的語言過一遍,這裡推薦浙江大學翁凱老師的C語言課程。連結:https://mooc.study.163.com/course/1000002011?tid=2001530003#/info
一、記住演算法思想(是什麼)
這一部分的目標是,你能給人說明白,什麼是”堆疊“,什麼是”平衡二叉樹“等。題主應當形成長久記憶,儲存到你的”硬碟“裡,而不僅僅在學習的時候過了一遍你的”記憶體“。
第一步,記住資料結構最直觀的東西。這種直觀的記憶會在不知不覺中就完成,但為了更好的記住,還需去刻意記憶和偶爾的複習。
第二步,記憶該資料結構的定義與性質與特點等。例如,學習哈夫曼樹的時候。哈夫曼樹的定義:WPL(帶權路徑長度)最小的二叉樹;哈夫曼樹的特點:(1)沒有度為1的結點(2)n個葉子結點的哈夫曼樹共有2n-1個結點(3)哈夫曼樹的任意非葉節點的左右子樹交換後仍是哈夫曼樹。關於”資料結構“,需要記憶的內容也需要自己在其中慢慢領悟。
二、進行大量相關程式設計練習,用程式語言去實現某一資料結構上的演算法(怎麼辦)
必須承認,理解一個演算法很容易,很容易在紙上去模擬一個演算法的實現過程。但,具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的程式語言實現。在我看來,這一過程已經不屬於“資料結構與演算法”的內容了。而是你綜合素質的體現,如何真正理解問題和用程式設計技巧實現,很考驗自己。
三、”記住“特定情景下,利用某一特定的資料結構,去解決問題 (為什麼+怎麼辦)
每介紹一種資料結構,浙大資料結構與演算法的MOOC課程都會有一個實際問題來作為“引子”,回答了“這種資料結構為什麼會出現”。有的是為了實現特定的操作,有的是為了時間和空間上(大部分考慮的是時間複雜性)效率的更高。這些東西,我們也須理解記憶。
最終,希望題主能自己根據自己的理解,針對某個問題,熟練的給出下圖這樣的解決方案,我認為就算是入門了。
回覆列表
個人覺得語言只是一個載體,資料結構、演算法是永恆的理論,c語言沒學好沒關係,如果你後續選擇c++/java 等其它語言,同樣會遇到資料結構和演算法,那你就用你熟悉的語言去實現這些資料結構和演算法。
興趣永遠是最好的老師,不要為了學而學。