怎麼學好數據結構?
必須要學好c語言才能學好數據結構嗎
先學C語言在學數據結構理解上會比較容易,可以說是為數據結構的學習打下基礎
怎麼學好數據結構啊
我認識一些學通信工程的同學,他們現在找工作很麻煩,因為學得不軟不硬的,軟件上比不上計算機學院的,硬件上比不上電子信息的,例如在華為筆試時,通信的幾乎全掛了。所以建議你專攻一項,我認識的通信的同學現在都在專心學軟件方面的,數據結構是軟件的基礎,因此非常重要。
多寫程序是一個學習數據結構的好方法,先把C++學到精通,多寫一些內存結構上的程序,主要是順序表、鏈表、棧、隊列、樹等。圖論在面試時考得非常少(搜索等方向的例外,google就經常考圖論),可以不作重點。查找也考得比較少(數據庫和搜索等方向的例外),主要集中在二分查找、哈希表上(哈希很重要,大數據量處理方向的考得特別多,例如百度就專考哈希)。排序是面試中考得最多的,要搞清楚時間複雜度和空間複雜度是怎麼算的。遞歸也經常考,只要按照人正常的思維習慣去考慮問題,就可以輕鬆掌握遞歸。
在學習內存結構的東西時要結合實際的例子去思考,這個問題為什麼要用這種結構去實現,例如回滾操作或表達式求值要用棧、事務操作要用隊列、動態擴展內存要用鏈表、隨機定位要用順序表等。
數據結構書上常常會有些複雜的算法,如果你實在理解不了可以先跳過,等到你有一定經驗積累時在看。我們計算機學院的在學習數據結構時是也有同樣的感受,覺得很難,但等過了一年,到自己經驗很豐富時,寫過很多程序時,就不會覺得很難了。
總之,要多寫程序,不能只看書,自己去實現書上寫的偽代碼,自己去找些實際的例子來實現數據結構。
數據結構到底怎麼學比較好啊?
寫數據結構代碼編程了學習C語言,是大多數初學者的經驗,其實有辦法可以避免的。
多想> 多看 > 多寫字 > 多動鍵盤
養成好的編程習慣很重要。
做任何工作之前,要把自己的思路整理清楚 參考別人的相關工作經驗,針對自己的需求做分析 把思路落實到紙張上 採用自頂向下的編程方式,先把你的個函數的功能,入口和出口描述清楚 每個函數內部的執行流程,都要註釋好。 最後再分段逐步編碼。
這樣可以有效的避免大多數的錯誤發生。 即便出現錯誤,也很容易定位到問題的所在。 不知道大家是怎樣看待數據結構這門課的,有多少人覺得數據結構很難呢?我知道還是有一些同學這樣覺得的,有時候我跟我的朋友講要怎樣學,講了一大堆以後,他就向我抱怨:我以前c++都沒有學好,數據結構更學不好了,這哪跟哪的話啊,數據結構與c++沒有什麼關係,我想假如抱有這樣的心態,自己就不相信自己,那是不可能學好的,然後那些覺得數據結構很難的同學,我想他們應該會很看重數據結構的吧,然後就一天到晚捧著一本數據結構,這樣不會覺得很累嗎?而且因為覺得很難,就容易不相信自己,學的效率也不會很好,個人認為數據結構很好學,很容易學,或許這有點妄自菲薄吧,但是因為我覺得很容易,當然就會覺得自己沒問題,學得很輕鬆,效果也還可以。大家都是從高考走過來的,應該知道心態的重要性吧,兩種不同的心態,完全就是兩種不同的效果。學了這麼久數據結構了,我們到底在學些什麼呢?不知道大家有沒有想過,那現在我們現在來歸納一下我們學習的內容吧,其實學到現在我們也就學了幾種普通的數據結構,象二叉樹,樹,圖,還有排序的問題,前面的線性表和字符串也就是一些概念,當然還有一個很重要的KMP算法,然後在每種數據結構中我們也就是學到了若干處理的算法,我想真正數起來也就是幾十個算法吧。學習數據結構也就是要掌握這幾十種算法,多簡單。至於如何掌握每個算法呢,我想就是多看看書,重要的是能夠理解。 如果真的想學好數據結構的話,最好是能夠自己思考問題,不要剛想了一會就覺得做不出來,然後就去問其他人。其實張老師給我們的作業還是基於我們的水平的,我絕對相信我們自己能夠獨自想出算法,雖有可能會比較長時間吧,但是這樣肯定會比問其他人學到更多的東西。當然我並不是說不要問同學,有時候就是腦筋轉不過來,一問別人就懂了,當然問了別人不能只是我知道了這個算法,還應該去想如何思考才能得到這個算法,這樣水平會提高很多。
很多計算機專業的同學對於大學2年級開設的數據結構課程很是頭痛. 看見大家總在談論數據結構重要性,可使自己學習卻總也找不到合適的方法. 下面我和大家分享一下我過去一年多以來學習和應用數據結構方面一些經驗. 內容都是來自作者本人的一些經歷和體驗,希望對於大家學習數據結構有引導作用。 1什麼是數據結構 數據結構從文字上面來看,為數據和結構兩部分。這樣就很容易聯繫到數據結構的本質是一種對於數據結構花的知識。補充一個知識點,數據結構本質和離散數學有很密切的關係。離散數學是處理的是離散(非連續的)的數據,站在數據結構的觀點上來看,也可以理解是一種非連續數據的結構。 2數據結構和程序設計語言 數據結構和程序設計語言本身沒有任何聯繫,唯一有的關係就實用程序語言去描述數據結構。 因為數據結構是一種抽象數據,通過程序設計語言可以將在計算機中進行實現。今天大學裡數據結構課程常用來描述數據結構的語言有C程序設計語言,C 程序設計語言和JAVA程序設計語言.而對於喜歡其他語言的同學完全可以自己通過學習數據結構後用自己熟悉的程序設計語言去完成程序化的描述. 我自己過去......
怎樣才能真正學好數據結構
假設有一個actor,它的一個功能過於複雜,為了降低複雜度,可以將這個功能劃分成多個更小粒度的,更易管理的子任務,啟動新的child actors,監控它們任務運行(關於監控,詳見here)。每一個actor的創建者,也是其監控者。
設計一個actor system,我們要正確規劃,哪一個actor負責監控,監控什麼。幾點建議如下:
負責分發工作的actor,管理接受任務的actor,因為包工頭知道所有任務出錯了該怎麼解決 :)
擁有重要數據的actor,找出所有可能丟失該數據的子actor,監控,並處理它們的錯誤。類似Erlang的Error Kernel Pattern。(這段看不太明白)
如果一個actor需要其他的actor傳遞其需求或職責,必將監控之。它應該查看其他actor的存活狀態,已經是否完成完成任務,當然這不是監控範疇了,不涉及到監控策略
怎樣學習數據結構
很多計算機專業的同學對於大學2年級開設的數據結構課程很是頭痛.
看見大家總在談論數據結構重要性,可使自己學習卻總也找不到合適的方法.
下面我和大家分享一下我過去一年多以來學習和應用數據結構方面一些經驗.
內容都是來自作者本人的一些經歷和體驗,希望對於大家學習數據結構有引導作用。
1 什麼是數據結構
數據結構從文字上面來看,為數據和結構兩部分。這樣就很容易聯繫到數據結構的本質是一種對於數據結構花的知識。補充一個知識點,數據結構本質和離散數學有很密切的關係。離散數學是處理的是離散(非連續的)的數據,站在數據結構的觀點上來看,也可以理解是一種非連續數據的結構。
2 數據結構和程序設計語言
數據結構和程序設計語言本身沒有任何聯繫,唯一有的關係就實用程序語言去描述數據結構。
因為數據結構是一種抽象數據,通過程序設計語言可以將在計算機中進行實現。今天大學裡數據結構課程常用來描述數據結構的語言有C程序設計語言,C++程序設計語言和JAVA程序設計語言. 而對於喜歡其他語言的同學完全可以自己通過學習數據結構後用自己熟悉的程序設計語言去完成程序化的描述.
我自己過去很喜歡C#程序設計語言,自己用C#程序設計對於一些數據結構進行了實現.
大家可以通過訪問CSTC我的專欄看到兩篇C#描述的數據結構
3 數據結構學習的技巧
3.1 學習數據結構的概念後對於抽象數據類型的設計參考C++ STL標準庫中容器的設計.這樣對於無論是數據結構的學習還有程序設計接口能力上都會有很大的提高.
3.2 對於數據結構課程中很多時候都不太重視的順序(數組)做存儲的數據結構,希望大家還是要多留意這快的知識.對於有些場合需要考慮時間換空間的情況下需要考慮順序存儲結構.
3.3數據結構學習一定要自己獨立完成代碼實現,雖然有時候你理解內容了,但是實現上面還是會愈要很多困難的,解決這些困難會幫助你提高程序設計的能力的.
怎麼學好數據結構與算法,好難啊
先學好語言,這是學習的基礎。
有些算法書上在學習語言部分會有一點算法包含在內,比如遞歸。
要學算法,先練好遞歸,這會對你深入學習其他算法有很大的幫助。
樹形結構是數據結構中較難的部分,也是數據結構的基礎,主要靠練。
還有就是,不要總是學習理論,合上書本認真地把算法用代碼和實現是最重要的。
不要背代碼,沒用的,注重理解。
剛開始會有些不習慣,學得多了就好了。
-------------------------------------------------------------------------------------------
內容出自www.zhihu.com/question/19830721
希望對你有幫助
1. 程序 = 數據結構 + 算法
2. 學習:剛開始看時肯定會有些不清楚,因為你是剛學完 語言,對語言還不太熟練。你學習數據結構時找一本經典的數據結構書,看完一個數據結構後用語言將其實現。開始時的實現肯定會有困難,那麼請百度下會有很多優秀的數據結構源碼的。你可以模仿這些優秀的源碼寫。請記住一定要開始時自己實現,當被卡住了就看一下源碼,看看自己被卡在了什麼地方,引起注意以便下次自己會寫。當你把書上的數據結構源碼寫了一遍之後,你已經超過了你絕大部分的同學。
3. 運用: 這時你就需要對這些數據結構加以運用,你可以在百度上搜索“某個數據結構 + ACM”,你就會看到一些題目,這些題目都是數據結構的運用,甚至有這些數據結構的變形。每種數據結構做5題左右。期間你還會遇到程序另一重要的方面算法,有不會的就 百度。 期間可以學到的數據結構和算法做小軟件玩兒,例如壓縮軟件,五子棋之類的。
4. 深入: 當你完成了第三步你已經是你們學校的小高手了。這時看你的方向如果這時發現自己喜歡 ACM 的話就去搞 ACM,如果不感興趣,就找自己感興趣的技術學習一下,做幾個完整的項目,例如寫個編譯器,或者實現一個簡單的編程語言。
總結:無論選擇哪條道路只要按照這些做了,你畢業後肯定會成為搶手貨。
-------------------------------------------------------------------------------------------
也就這樣了:
時間並不會因為你的迷茫和遲疑而停留,
就在你看這篇文章的同時,
不知道有多少人在冥思苦想,
在為算法廢寢忘食,
不知道有多少人在狂熱地拍著代碼,
不知道又有多少提交一遍又一遍地刷新著OJ的status頁面……
沒有誰生來就是神牛,
而千里之行,
始於足下!
我期盼NOIP一等榜上有你(雖然我不知道你叫什麼)。
C語言沒有學好,怎麼學數據結構??
數據結構研究的是如何存儲、操作數據,樓主應該關心每種數據結構的數學模型,可以用在什麼場合,各種性能怎麼樣:例如增加數據,查找數據,刪除數據都要花多少時間與內存。
至於C語言只是一種表現工具,有C語言版的數據結構也有C++的數據結構等等,數據結構是方法,C、C++等是操作對象,如果要學號數據結構,起碼C語言裡的最基本的代碼要能看懂的吧。
還有就是學數據結構時要經弗用到C語言編程來實踐熟練數據結構的思想方法。。。
額,我就是說說它們兩個的關係,總之我們學數據結構就是為了編程,就算你把數據結構學的再好,學不好編程,沒有地方去用也是白搭。所以還是再補補C語言吧,多看看教材,小程序每天寫一兩個,我大一就是這樣過的。
數據結構怎麼自學?完全看不懂
是思想不對,嚴蔚敏書的很不錯。我就是看嚴蔚敏的。
你看數據結構並不是去了解c語言的新知識。而是瞭解一個計算方式。
就好比 你知道三角形的面積求法 底乘高除以二。 撫是有一種新辦法,嚴蔚敏教你海倫定理。
一個方式沒看懂,就再重新看, 一定要穩定心情。不能急躁。你學的是這個方法,這個程序的寫法是不固定的。
數據結構該怎麼學啊?
數據結構學好並不難,關鍵是多上機操作,一個算法你看上去很簡單,其實裡面的小細節很多,沒有自己編譯連接運行,有些問題你可能發現不了。其實對於語言,真的無所謂啦,用C也好,用C#也好,都能實現,關鍵是算法思想的理解和運用。
我們老師說過一句話:編程語言不懂,你可以花一個月的時間把那門語言學的滾瓜爛熟,然後你就可以寫程序了;而要是你編程思想不理解,哪怕你會一千種礌言,也寫不出好的程序。
數據結構關鍵是學習算法的思路。慢慢學吧,肯定能行的!
怎麼學好數據結構
個人的經驗: 學數據結構看書沒有用,只有寫代碼才是王道 而且一定注意,不是抄代碼,你看著書上的代碼寫一遍沒有用的 看完書中的描述(最好是指看文字描述,不用看代碼),然後自己寫,寫多少算多少 寫完以後再和書上對照,這樣一個一個的寫,你的功底就會比較紮實了 ps:數據結構是非常重要的東西,一定要學好 ps2:基本的數據結構學完後,可以看看侯捷寫的《STL源碼解析》,那個是實際中的應用 ps3:《計算機程序設計藝術》這個太糾結了,幾年之後再看,雖然是好書,但不是學東西用的 psp:好像沒什麼好ps的了