數(shù)據(jù)結(jié)構(gòu)怎么學(xué) 如何學(xué)好數(shù)據(jù)結(jié)構(gòu)
怎樣學(xué)好數(shù)據(jù)結(jié)構(gòu)?怎么學(xué)好數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)到底怎么學(xué)比較好???如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?如何學(xué)好數(shù)據(jù)結(jié)構(gòu)?怎么學(xué)好數(shù)據(jù)結(jié)構(gòu)與算法,好難?。?/p>
本文導(dǎo)航
- 數(shù)據(jù)結(jié)構(gòu)自學(xué)難度
- 怎么學(xué)好數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)結(jié)構(gòu)到底怎么學(xué)比較好???
- 如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)
- 如何學(xué)好數(shù)據(jù)結(jié)構(gòu)
- 怎么學(xué)好數(shù)據(jù)結(jié)構(gòu)與算法,好難啊
數(shù)據(jù)結(jié)構(gòu)自學(xué)難度
個人的經(jīng)驗:
學(xué)數(shù)據(jù)結(jié)構(gòu)看書沒有用,只有寫代碼才是王道
而且一定注意,不是抄代碼,你看著書上的代碼寫一遍沒有用的
看完書中的描述(最好是指看文字描述,不用看代碼),然后自己寫,寫多少算多少
寫完以后再和書上對照,這樣一個一個的寫,你的功底就會比較扎實了
ps:數(shù)據(jù)結(jié)構(gòu)是非常重要的東西,一定要學(xué)好
ps2:基本的數(shù)據(jù)結(jié)構(gòu)學(xué)完后,可以看看侯捷寫的《STL源碼解析》,那個是實際中的應(yīng)用
ps3:《計算機(jī)程序設(shè)計藝術(shù)》這個太糾結(jié)了,幾年之后再看,雖然是好書,但不是學(xué)東西用的
psp:好像沒什么好ps的了
怎么學(xué)好數(shù)據(jù)結(jié)構(gòu)
個人感覺,數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)處于兩個階段。
1. 為了應(yīng)付考試
這個階段主要還是通過做題,鞏固記憶,加深理解;(可以通過寫程序加深理解)
2. 編程需要
數(shù)據(jù)結(jié)構(gòu)是已經(jīng)很成熟的學(xué)科,大多數(shù)算法都有標(biāo)準(zhǔn)化的實現(xiàn),所以重點還是理解算法作者的思路,為以后自己開發(fā)算法打基礎(chǔ)。
當(dāng)然,通過編寫跟數(shù)據(jù)結(jié)構(gòu)有關(guān)的程序,同樣能夠提高自己的應(yīng)試能力,畢竟理論結(jié)合實際才是王道,否則那就是紙上談兵!
數(shù)據(jù)結(jié)構(gòu)到底怎么學(xué)比較好???
寫數(shù)據(jù)結(jié)構(gòu)代碼編程了學(xué)習(xí)C語言,是大多數(shù)初學(xué)者的經(jīng)驗,其實有辦法可以避免的。
多想> 多看 > 多寫字 > 多動鍵盤
養(yǎng)成好的編程習(xí)慣很重要。
做任何工作之前,要把自己的思路整理清楚 參考別人的相關(guān)工作經(jīng)驗,針對自己的需求做分析 把思路落實到紙張上 采用自頂向下的編程方式,先把你的個函數(shù)的功能,入口和出口描述清楚 每個函數(shù)內(nèi)部的執(zhí)行流程,都要注釋好。 最后再分段逐步編碼。
這樣可以有效的避免大多數(shù)的錯誤發(fā)生。 即便出現(xiàn)錯誤,也很容易定位到問題的所在。 不知道大家是怎樣看待數(shù)據(jù)結(jié)構(gòu)這門課的,有多少人覺得數(shù)據(jù)結(jié)構(gòu)很難呢?我知道還是有一些同學(xué)這樣覺得的,有時候我跟我的朋友講要怎樣學(xué),講了一大堆以后,他就向我抱怨:我以前c++都沒有學(xué)好,數(shù)據(jù)結(jié)構(gòu)更學(xué)不好了,這哪跟哪的話啊,數(shù)據(jù)結(jié)構(gòu)與c++沒有什么關(guān)系,我想假如抱有這樣的心態(tài),自己就不相信自己,那是不可能學(xué)好的,然后那些覺得數(shù)據(jù)結(jié)構(gòu)很難的同學(xué),我想他們應(yīng)該會很看重數(shù)據(jù)結(jié)構(gòu)的吧,然后就一天到晚捧著一本數(shù)據(jù)結(jié)構(gòu),這樣不會覺得很累嗎?而且因為覺得很難,就容易不相信自己,學(xué)的效率也不會很好,個人認(rèn)為數(shù)據(jù)結(jié)構(gòu)很好學(xué),很容易學(xué),或許這有點妄自菲薄吧,但是因為我覺得很容易,當(dāng)然就會覺得自己沒問題,學(xué)得很輕松,效果也還可以。大家都是從高考走過來的,應(yīng)該知道心態(tài)的重要性吧,兩種不同的心態(tài),完全就是兩種不同的效果。學(xué)了這么久數(shù)據(jù)結(jié)構(gòu)了,我們到底在學(xué)些什么呢?不知道大家有沒有想過,那現(xiàn)在我們現(xiàn)在來歸納一下我們學(xué)習(xí)的內(nèi)容吧,其實學(xué)到現(xiàn)在我們也就學(xué)了幾種普通的數(shù)據(jù)結(jié)構(gòu),象二叉樹,樹,圖,還有排序的問題,前面的線性表和字符串也就是一些概念,當(dāng)然還有一個很重要的KMP算法,然后在每種數(shù)據(jù)結(jié)構(gòu)中我們也就是學(xué)到了若干處理的算法,我想真正數(shù)起來也就是幾十個算法吧。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)也就是要掌握這幾十種算法,多簡單。至于如何掌握每個算法呢,我想就是多看看書,重要的是能夠理解。 如果真的想學(xué)好數(shù)據(jù)結(jié)構(gòu)的話,最好是能夠自己思考問題,不要剛想了一會就覺得做不出來,然后就去問其他人。其實張老師給我們的作業(yè)還是基于我們的水平的,我絕對相信我們自己能夠獨(dú)自想出算法,雖有可能會比較長時間吧,但是這樣肯定會比問其他人學(xué)到更多的東西。當(dāng)然我并不是說不要問同學(xué),有時候就是腦筋轉(zhuǎn)不過來,一問別人就懂了,當(dāng)然問了別人不能只是我知道了這個算法,還應(yīng)該去想如何思考才能得到這個算法,這樣水平會提高很多。
很多計算機(jī)專業(yè)的同學(xué)對于大學(xué)2年級開設(shè)的數(shù)據(jù)結(jié)構(gòu)課程很是頭痛. 看見大家總在談?wù)摂?shù)據(jù)結(jié)構(gòu)重要性,可使自己學(xué)習(xí)卻總也找不到合適的方法. 下面我和大家分享一下我過去一年多以來學(xué)習(xí)和應(yīng)用數(shù)據(jù)結(jié)構(gòu)方面一些經(jīng)驗. 內(nèi)容都是來自作者本人的一些經(jīng)歷和體驗,希望對于大家學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)有引導(dǎo)作用。 1什么是數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)從文字上面來看,為數(shù)據(jù)和結(jié)構(gòu)兩部分。這樣就很容易聯(lián)系到數(shù)據(jù)結(jié)構(gòu)的本質(zhì)是一種對于數(shù)據(jù)結(jié)構(gòu)花的知識。補(bǔ)充一個知識點,數(shù)據(jù)結(jié)構(gòu)本質(zhì)和離散數(shù)學(xué)有很密切的關(guān)系。離散數(shù)學(xué)是處理的是離散(非連續(xù)的)的數(shù)據(jù),站在數(shù)據(jù)結(jié)構(gòu)的觀點上來看,也可以理解是一種非連續(xù)數(shù)據(jù)的結(jié)構(gòu)。 2數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計語言 數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計語言本身沒有任何聯(lián)系,唯一有的關(guān)系就實用程序語言去描述數(shù)據(jù)結(jié)構(gòu)。 因為數(shù)據(jù)結(jié)構(gòu)是一種抽象數(shù)據(jù),通過程序設(shè)計語言可以將在計算機(jī)中進(jìn)行實現(xiàn)。今天大學(xué)里數(shù)據(jù)結(jié)構(gòu)課程常用來描述數(shù)據(jù)結(jié)構(gòu)的語言有C程序設(shè)計語言,C 程序設(shè)計語言和JAVA程序設(shè)計語言.而對于喜歡其他語言的同學(xué)完全可以自己通過學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)后用自己熟悉的程序設(shè)計語言去完成程序化的描述. 我自己過去很喜歡C#程序設(shè)計語言,自己用C#程序設(shè)計對于一些數(shù)據(jù)結(jié)構(gòu)進(jìn)行了實現(xiàn). 大家可以通過訪問CSTC我的專欄看到兩篇C#描述的數(shù)據(jù)結(jié)構(gòu) 3數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)的技巧 3.1學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的概念后對于抽象數(shù)據(jù)類型的設(shè)計參考C STL標(biāo)準(zhǔn)庫中容器的設(shè)計.這樣對于無論是數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)還有程序設(shè)計接口能力上都會有很大的提高. 3.2對于數(shù)據(jù)結(jié)構(gòu)課程中很多時候都不太重視的順序(數(shù)組)做存儲的數(shù)據(jù)結(jié)構(gòu),希望大家還是要多留意這快的知識.對于有些場合需要考慮時間換空間的情況下需要考慮順序存儲結(jié)構(gòu). 3.3?數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)一定要自己獨(dú)立完成代碼實現(xiàn),雖然有時候你理解內(nèi)容了,但是實現(xiàn)上面還是會愈要很多困難的,解決這些困難會幫助你提高程序設(shè)計的能力的. 推薦一本習(xí)題集 C 描述的數(shù)據(jù)結(jié)構(gòu)的習(xí)題集(英文版) 數(shù)據(jù)結(jié)構(gòu)是計算機(jī)專業(yè)最重要最基礎(chǔ)的一門課,對于有過編程經(jīng)驗的人,結(jié)合自己的編程體會去悟它的思想;對于初學(xué)者,撿一種自己最熟悉的語言去分析它總之千萬不要陷在語言的細(xì)節(jié)上要高屋建瓴的去領(lǐng)會數(shù)據(jù)結(jié)構(gòu)的思想。而且我覺得隨著編程經(jīng)歷的豐富對它的體會越深入,最初接觸是對一些思想可能只是生硬的記憶,隨著學(xué)習(xí)的深入逐漸領(lǐng)悟了很多。奉勸孔孔不要灰心,對于實在弄不懂的東東,就先記住,應(yīng)付過考試再說。
你用的是什么書呀?我們現(xiàn)在也在學(xué)數(shù)據(jù)結(jié)構(gòu)呀,雖然是剛剛開始學(xué)習(xí)不久,我覺得那個數(shù)據(jù)結(jié)構(gòu)要多結(jié)合現(xiàn)實來理解吧。真的要自己動手去把書里面的習(xí)題和例子都畫畫圖才好,就像我們書里面那個關(guān)于紅綠燈設(shè)置的問題,單單靠看是看不懂的,然后當(dāng)我自己用以前所學(xué)過的知識,用集合的方法,把那些可以一起通行的方向都?xì)w為了一類之后,我感覺那個思緒變得很清晰,只有當(dāng)你的思路理清了以后,才可以更好地理解。還有,關(guān)于數(shù)據(jù)結(jié)構(gòu)怎么學(xué)這個問題,也許我的學(xué)習(xí)方法不是最好的,但是我還是想和你分享一下下吧,就是一開始不是有些線性表,鏈表什么的嗎?那些不知道你能懂嗎?我在看書的時候,就正如順序表,我會把這個順序表想象成一個現(xiàn)實中的隊伍,正如以前做操時排隊那樣,基本的添加和刪除等操作都可以想象成老師對這個隊伍的操作,就正如添加就是在一個隊伍的某一個地方插入一個人這樣。不過這個只是一個方法而已,順序表其實也不用什么這樣的想象吧,不過也許以后得學(xué)習(xí)也可以參照我的這個方法吧,聯(lián)系現(xiàn)實。。不過還是得靠自己去親手畫畫書里面的那些結(jié)構(gòu)等等的東西,當(dāng)你自己可以畫出來,其實你的思路就會清晰了,思路清晰了,學(xué)起來會好很多的。。 加油??!
如何學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)
很多計算機(jī)專業(yè)的同學(xué)對于大學(xué)2年級開設(shè)的數(shù)據(jù)結(jié)構(gòu)課程很是頭痛.
看見大家總在談?wù)摂?shù)據(jù)結(jié)構(gòu)重要性,可使自己學(xué)習(xí)卻總也找不到合適的方法.
下面我和大家分享一下我過去一年多以來學(xué)習(xí)和應(yīng)用數(shù)據(jù)結(jié)構(gòu)方面一些經(jīng)驗.
內(nèi)容都是來自作者本人的一些經(jīng)歷和體驗,希望對于大家學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)有引導(dǎo)作用。
1 什么是數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)從文字上面來看,為數(shù)據(jù)和結(jié)構(gòu)兩部分。這樣就很容易聯(lián)系到數(shù)據(jù)結(jié)構(gòu)的本質(zhì)是一種對于數(shù)據(jù)結(jié)構(gòu)花的知識。補(bǔ)充一個知識點,數(shù)據(jù)結(jié)構(gòu)本質(zhì)和離散數(shù)學(xué)有很密切的關(guān)系。離散數(shù)學(xué)是處理的是離散(非連續(xù)的)的數(shù)據(jù),站在數(shù)據(jù)結(jié)構(gòu)的觀點上來看,也可以理解是一種非連續(xù)數(shù)據(jù)的結(jié)構(gòu)。
2 數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計語言
數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計語言本身沒有任何聯(lián)系,唯一有的關(guān)系就實用程序語言去描述數(shù)據(jù)結(jié)構(gòu)。
因為數(shù)據(jù)結(jié)構(gòu)是一種抽象數(shù)據(jù),通過程序設(shè)計語言可以將在計算機(jī)中進(jìn)行實現(xiàn)。今天大學(xué)里數(shù)據(jù)結(jié)構(gòu)課程常用來描述數(shù)據(jù)結(jié)構(gòu)的語言有C程序設(shè)計語言,C++程序設(shè)計語言和JAVA程序設(shè)計語言. 而對于喜歡其他語言的同學(xué)完全可以自己通過學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)后用自己熟悉的程序設(shè)計語言去完成程序化的描述.
我自己過去很喜歡C#程序設(shè)計語言,自己用C#程序設(shè)計對于一些數(shù)據(jù)結(jié)構(gòu)進(jìn)行了實現(xiàn).
大家可以通過訪問CSTC我的專欄看到兩篇C#描述的數(shù)據(jù)結(jié)構(gòu)
3 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)的技巧
3.1 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的概念后對于抽象數(shù)據(jù)類型的設(shè)計參考C++ STL標(biāo)準(zhǔn)庫中容器的設(shè)計.這樣對于無論是數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)還有程序設(shè)計接口能力上都會有很大的提高.
3.2 對于數(shù)據(jù)結(jié)構(gòu)課程中很多時候都不太重視的順序(數(shù)組)做存儲的數(shù)據(jù)結(jié)構(gòu),希望大家還是要多留意這快的知識.對于有些場合需要考慮時間換空間的情況下需要考慮順序存儲結(jié)構(gòu).
3.3數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)一定要自己獨(dú)立完成代碼實現(xiàn),雖然有時候你理解內(nèi)容了,但是實現(xiàn)上面還是會愈要很多困難的,解決這些困難會幫助你提高程序設(shè)計的能力的.
如何學(xué)好數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)是學(xué)好程序設(shè)計的基礎(chǔ)
里面寫了一些常用的算法和數(shù)據(jù)結(jié)構(gòu)
參加acm很有用
對以后找工作
面試都很有用
數(shù)據(jù)結(jié)構(gòu)
一般面試過程中
問的就是堆棧等等問題
學(xué)好數(shù)據(jù)結(jié)構(gòu)
首先得弄明白概念
然后就是上機(jī)實驗了
每種類型的算法你都必須很熟練地敲出來
這里比較難懂的就是遞歸
和回溯的一些問題了
這個一定要學(xué)好
還有圖論那個地方的知識很難
什么最短路徑問題
等等
學(xué)好數(shù)據(jù)結(jié)構(gòu)很不容易
要下苦功夫
可以看看麻省理工的
課本
introduction
to
algorithm
還可以看看
the
art
of
computer
programming
怎么學(xué)好數(shù)據(jù)結(jié)構(gòu)與算法,好難啊
李明杰老師:每周一道算法題 通關(guān)算法面試課(超清視頻)百度網(wǎng)盤 ;
鏈接: https://pan.baidu.com/s/14GZpVf03Mf9E-YnMrrR4Pw 提取碼: 5dmc 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦; ;
若資源有問題歡迎追問~ ;
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由尚恩教育網(wǎng)發(fā)布,如需轉(zhuǎn)載請注明出處。