⑴ 如何學習數據結構
學好數據結構首先學好C語言指針,數據機構內在串聯全靠指針作用,指針主要難在本身是帶地址的變數,再加上指針的指針串聯導致很多人誤解,先要學會理解,要對計算機的內存結構有個大概了解,對一些常見的進制之間的轉化以及位元組對齊等有行程基本的認知。
理解概念,建立抽象模型,比如簡單的隊列,先進先出模式,在設計數據模型的時候,就需要有一個對頭和隊尾的概念,數據需要從隊尾插入隊頭出來,基本上三個屬性就出來了,一個對頭指針,一個隊尾指針,一個結構體數值,常見的方法有刪除清空隊列,有插入隊列操作,出隊操作,創建初始隊列操作等等,這樣子抽象數據模型,形成自己的思維理解,然後再進行代碼設計。
需要變通實踐,代碼調試變通,數據結構的組合無窮變著寫代碼。演算法的奧妙就是在於變換,放在數據結構也是這個樣子,掌握基本的數據機構演算法,在學好數據結構的前提下可以學習下一本經典的演算法書《演算法導論》這個是演算法的經典書籍。
學習數據機構不要想著有什麼技巧或者方法,把自己調整到最佳的學習狀態,方法自然就有了,不要給自己設置什麼限制,設置底線只會讓自己處在一個圍牆之內,學習新東西就是突破自我的一個過程,不要在開始學習的時候給自己過大的壓力。
⑵ 如何學習數據結構與演算法
1、記住數據結構,記住演算法思想(是什麼)記住數據結構最直觀的東西;記憶該數據結構的定義、性質、特點等。很多東西的理解和創新都是以記憶為前提的。
2、進行大量相關編程練習,用編程語言去實現某一數據結構上的演算法(怎麼辦)
很多時候,理解一個演算法很容易,很容易在紙上去模擬一個演算法的實現過程。但具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的編程語言實現。
3、“記住”特定情景下,利用某一特定的數據結構,去解決問題 (為什麼+怎麼辦)
每介紹一種數據結構,浙大數據結構與演算法的MOOC課程都會有一個實際問題來作為“引子”,回答了“這種數據結構為什麼會出現”。有的是為了實現特定的操作,有的是為了時間和空間上(大部分考慮的是時間復雜性)效率的更高(所以,沒事的時候,分析一下演算法的時間復雜性)。這些東西,我們也須理解記憶。每一數據結構都有其特性,去解決某一類問題,我們需要去記憶,去感悟。
4、形成一個屬於自己的知識體系
如何去“記住”(記好筆記,多多復習);在學習過程中,遇到挫折,產生挫敗感該如何處理(這個是必然會發生的,總有難以理解不會的地方);如何進行心態方面的調整(欲速則不達,不過也有”敏捷學習“的概念)。
⑶ 關於C語言數據結構,該如何學習和入門
說些我的見解:
1)首先明確數據結構研究的對象:研究的是如何存儲、操作數據,樓主應該關心每種數據結構的數學模型,可以用在什麼場合,各種性能怎麼樣:例如增加數據,查找數據,刪除數據都要花多少時間與內存。
學完之後要知道每個實際情況該用什麼數據結構。如果能自己設計出來更適合實際需求的數據結構,那就強了。
2)C語言只是表現形式,不是核心:像著名的《演算法導論》描述數據結構用的都是偽代碼。真正學好C語言,只要理解數據結構的數學模型,就可以輕松寫出代碼。所以像這本書C語言代碼實現的部分,應該能翻譯成數學模型來看。熟練掌握一門語言是和計算機溝通的基礎。
3)本書使用了面向對象,即C++的一些思想,目的是以後可以直接用數據結構,而不必重寫代碼。Destory只是一些快捷方式,在具體環境中實現,這些結構是沒必要記的,應該根據需求樓主可以自己寫出來。其實很多語言都提供了這些數據結構的實現,C++里的叫STL。
總之:核心是數學模型,順便熟悉一下C語言,寫些比較大的程序時,可以把數據結構包裝成書上那樣一個大的結構,方便使用。最後,多寫程序是很有好處的,可以鍛煉上面所有的技能。