我看不懂數據結構是不是說明我笨啊?

我大一才上完,學習成績一般。放假了我想提前學習一下。就看了數據結構。

裡面的代碼我仔細看,還是能懂的,只是有時候不懂其中的用意。

看著看著我發現就是中文和英文而已,每個漢字和字母我都認識,加一起卻不認識了(′Д?ヽ

我是不是笨啊(′Д?ヽ現在轉專業來得及么


孩子啊,對書本(知識)撒嬌賣萌都是沒有用的啊。

覺得看不懂的話就了一個建議,做題,做題。

知道數據結構用在哪裡、有什麼優勢和劣勢、為什麼還存在於實踐中或者已經被淘汰了。這些東西光讀書是不會真正知道的。

我也來念兩句詩:紙上得來終覺淺,絕知此事要躬行。


「是不是說明我笨啊」

我以為這種話只有撩漢的時候才會說的


看不懂不來問看不懂的地方,卻來問自己笨不笨,看起來是的。

================

有人說題主是來求鼓勵的,在我看來,求鼓勵第一不符合知乎提問規範中對於問題能引發深入探討的約定,第二不能解決題主遇到的問題


高一時,我英語很差,差到什麼程度,幾乎考試沒有及格過。而所在的那個班級是成績比較好的班,我的英語成績應該是倒數的。我就納悶了,為什麼一樣的課程一樣的學習計劃一樣的用功程度,為何放在我身上效果就那麼差。深思過後,我意識到了,我基礎很差,跟不上課老師的課程。於是有一段時間,我不按照課程走,花精力在惡補初中的基礎,慢慢就把成績提上去了。

人與人水平不一樣,學同樣的東西效果就不一樣。要明白,沒那個體力,是爬不上那座山的。

那我從小山爬起就好了。

你看你那本書,要是底子差的沒有老師帶簡直吃力不討好。我也買過一本,是基於Java的,看了一半,看過的都是是懂非懂的感覺。

後來我重新找了一本,大話數據結構,看了三天,看完敲著練習,收穫好大。

認識自己的不足,從適合路的出發,才能走的快。如果動不動說智商問題,這才是問題所在吧。


以我和我接觸的歷史來看,學C++數據結構的時候,很多時候是C++不夠好,不能支撐自己走下去,於是當時我的室友因此而重新學C++,再來學數據結構。所以,若學C++數據結構,首先確保C++知識足夠支撐你學下去,指針(包括二重指針)與內存,面向對象,簡單的模版都是需要的。對於指針與內存,請搜索Stanford C Pointers and Memory,有一個pdf講的不錯。若不懂,自己還是"白痴"時,就老老實實先把代碼敲進電腦,多體會幾次代碼,直到自己完全可以知道怎麼寫,然後回過頭再來想理論,如此反覆理解。最後,要做練習,並且去做做浙大PAT數據結構版塊和Leetcode,我覺得Leetcode很多題目都是數據結構的練習題。


是挺笨的,下點功夫就好了。


果然是貴知的風格。。

你先換本啊哈演算法,大話數據結構看看又不會死。。。

雖然說最後還得啃。。



認真敲代碼,認真做後面的題,不懂再問。


初學看不懂很正常呀。

教你個方法:

1. 書讀百遍,其意自現。建議你反覆去看,同一個概念,看一百遍,從陌生到熟悉,縱然不理解其意思,但是也要達到看到這個概念,沒有陌生感。

2. 以你現在的教程為主,也就是說按這個書的大綱目錄去學習,但是在學這本書的同時,可以去參考其他書,甚至在線教育網站的視頻內容。這樣做的目的是,去感受不同的人,不同的書,不同的角度講解同一個概念。

3. 動手實踐。不只是練習演算法題,也要動手開發一些功能。在擁有一些編程經驗之後再回頭看數據結構,你會覺得很簡單。

編程其實是個實踐性非常強的學科,學習編程,相當於你在虛擬的世界耕作,正常人都能學會,就是個時間功夫而已,智商高的人悟性高,可能時間用的少。你剛學看不懂很正常,沒必要質疑自己的智商。想起一句話,很多人的勤奮程度,還輪不到拼智商。


哈哈,好耿直


學數據結構最好的方法是

先看資料,學實現原理

然後看代碼,模擬實現過程

我這麼蠢都能5天學會SAM..還真不信題主有什麼數據結構是死活學不會的


「現在轉專業來得及么」,這個想法恐怕不理性。反正以我的了解大部分高校對申請轉專業的學生還是有一定的要求的,比如綜合成績在年級的排名之類。因為轉專業這事本身是一種鼓勵性而非淘汰性的政策。你若是連自己專業的課程都學不好,別的專業為啥要你?

自己選的專業,含著淚也要讀完吧。但往好里想,有數據結構課的專業,總應該不會太差的。可能不同人的天賦真是在不同方向的,你有其它特長,但在這個領域是中人之資,也是正常的。不要輕言放棄,就算真的不夠聰明,也要努力嘗試過。畢竟,計算機科學是一堆相當聰明的人發明出來的,一般人哪有那麼容易學會。

另外有一種可能的情況就是你看的書不合適或者老師講得不好。比如,你貼的這本書,雖然我沒看過具體內容,但用了C++,那C++語言本身有可能成為你理解範例代碼的障礙。這種情況的概率也是很大的。以我個人的經驗,用Pascal或者純C來學數據結構是比較合適的,抽象層次不多也不少,除了指針之外沒什麼特別的坑點。


估計是教材有坑

打個硬廣:

課程信息 - 數據結構


數據結構其實不需要很強的數序基礎(這也是我能在這個行業混的原因),所以看不懂大體2種可能,書太爛,對編程無愛。

這本書我好像有,但肯定沒仔細讀過,看豆瓣和amazon上也沒有合適的書評,不好說,當然結合這書還有一個可能是C++極弱。

如果對編程沒愛,未來生計不愁,趕快轉行吧、

如果對編程沒愛,未來生計發愁,速度決定是否轉換吧。誰讓你沒錢呢。


一個東西不懂往往是因為你沒把它拆分的足夠簡單

你把它搞成一坨去理解肯定要燒腦

每個人能夠同時關注的簡單事物5到9個左右(比如同時記住的顏色數量)

這個有個體差異,但是只要拆分的夠簡單,量子力學你都能學會(當然只是學會。。。要發明那就要一點天才了,但是沒有證據證明同時處理9個事物的人比同時處理5個事物的人發明新事物能力更強)


沒有受過正規的符號思維訓練。

做些類似的題目,訓練訓練就好了


1. 題主之前寫的程序多不多? 數組熟練嗎? 指針熟練嗎?不熟先做做leetcode或者ACM的水題。

2. 還是看不懂可以換其他書, 關於數據結構的書都找幾本來看, 看看哪本講解的更適合你。我推薦《大話數據結構》,入門是極好的。 鏈表看不懂?看了一些書這方面的講解還是不懂,到網上搜索,有更多的資料。 要是還不懂我覺得是你的編程能力還不行。。。

3. 要理解的話,我覺得還要自己親自實現一遍。


千萬別在寫代碼的圈子說自己笨,你不會博來任何同情,只有深深的鄙視。

你不如問,我應該如何學好數據結構?從哪些方面入手?當然這些資料網上太多了。


不笨

要是你現在就看得懂,豈不是說大部分程序猿都很笨?當然這裡面包括我


推薦閱讀:

話說最小生成樹的prim演算法和kursual演算法的區別?
為什麼Dijkstra演算法每輪遞推能夠保證找到一個頂點的最短路徑?
任何密碼都可以用窮舉推算出來,只是時間問題。如果是這樣的話,那不是很不安全?
如何證明Manacher演算法的時間複雜度是O(n)?
如何看待用中國大陸地區境內的搜索引擎搜索主席樹得到的結果文不對題?

TAG:編程 | 計算機 | 計算機科學 | CC | 演算法與數據結構 |