[討論] 想重新學好資料結構

作者: Chen334 (古先生)   2018-01-10 23:12:39
如題……剛轉入資工系,第一次遇到幾百行的程式碼,都還是用以前天真的寫法。
想當然這學期已經差不多要被當了,但是我想認真學好這門科目,學校是用horowitz的c資料結構這本書。
我的問題不是上課無法理解內容,考試還算過得去,自己唸書也大致可以吸收,但是老師出的作業我從來沒有自己完成過,都要詢問同學,甚至看過同學的code,到最後甚至都不是我的邏輯了……想當然實作的分數相當低。
想請問各位有沒有推薦的資料結構書,內容大概到hash就符合我的要求了,前幾天有去找老師問過,我們老師推薦用圖解資料結構使用c
想請問版上各位大神還有沒有其他推薦的書,比較想要每章背後都有基本到進階的實作題目可以練習的課本……真的不想放棄這個科目啊
弱弱在問一下,如果資料結構都學不好是不是以後要考慮轉行了……
作者: sunneo (艾斯寇德)   2018-01-10 23:21:00
倒是不用轉行,每個人的技能樹點的方式都不一樣
作者: steve1012 (steve)   2018-01-11 00:12:00
可以找些題目來刷 就知道怎麼用了
作者: Hazukashiine (私は幸せです)   2018-01-11 00:26:00
單純聽你的敘述 我覺得你應該懂一些資料結構的概念但是對於C語言不夠熟悉 讓你覺得你好像不懂資料結構
作者: james732 (好人超)   2018-01-11 00:35:00
先把書上的範例程式親手打到電腦跑過
作者: freeunixer (御劍客)   2018-01-11 00:57:00
作者: chuegou (chuegou)   2018-01-11 01:32:00
作業沒辦法自己完成這問題比較嚴重表示要google什麼關鍵字都沒頭緒?
作者: s0914714 (YA)   2018-01-11 02:05:00
應該先把C學好吧 資料結構了解使用時機比較重要
作者: springman (司布林)   2018-01-11 04:39:00
多練習將資料結構的程式寫出來,拿來在其他程式中使用.寫程式可能要一、兩年才會比較習慣電腦的想法。
作者: testPtt (測試)   2018-01-11 08:02:00
最好不要c
作者: dou0228 (7777)   2018-01-11 08:56:00
用 C 是好事啊,C 學的好,表示你有相當程度的基礎
作者: Ommm5566 (56天團)   2018-01-11 09:18:00
樓上不要亂推阿不要用C 建議python
作者: jamfly (jamfly)   2018-01-11 09:34:00
推python 還有mit的開放式課程
作者: Neisseria (Neisseria)   2018-01-11 09:37:00
可以練兩輪,第一輪用 Python,比較簡單,著重觀念第二輪改用 C,這時候就是熟悉一些語法細節我猜學校應該還是要求用 C/C++ 實作,遲早要會的
作者: descent (「雄辯是銀,沉默是金」)   2018-01-11 10:20:00
大話資料結構 參考一下, 我是買簡體版本
作者: damody (天亮damody)   2018-01-11 10:27:00
c吧 python太簡單
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-01-11 11:04:00
哇咧這到底什麼版阿 版名有python喔
作者: Sidney0503 (Sidney0503)   2018-01-11 11:33:00
樓上 所以呢? 這篇文章本身就跟C/C++無關了學概念的時候本來就是用簡單可以達到的語言阿不然還不知道自己有沒有想錯先死在語言語法
作者: TWkobe (中華柯比)   2018-01-11 12:13:00
用哪一種都沒差 只是用py簡單的多我覺得你可以試試先在紙上run一遍 想通後再寫程式觀念通了就剩下是語法的熟悉度
作者: asd456fgh778 ( )   2018-01-11 12:47:00
不要 python
作者: loa123 (撕裂地中海)   2018-01-11 12:58:00
你們老師推的那本看過...很難 但學起來的話會很精實
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-01-11 14:16:00
不錯很好 順便把版上問linklist的通通幹掉吧那都是資料結構 都跟C++無關 科科看起來現在有很多人從python起步所以也叫別人用py學習本人完全不覺得需要多搞一種語言治絲益棼你們說順手 對原po就真的順手?有沒有聽過邯鄲學步?這個也學那個也學 最後都學不好 大有人在而且py實在是很難用 沒錯很難用 我可以再說一次
作者: Sidney0503 (Sidney0503)   2018-01-11 14:43:00
自己不會用說難用 看過太多人這樣說了一大早就要戰語言?戰力這麼弱就別出來討打臉了C++的優勢在於擁有最多的feature 選擇上非常多所以適合極致效能調教 對於不同case使用不同手段優化相反的python的簡潔非常適合快速實作演算法所以很多library都是c/c++寫library包成python界面現在原PO要學得是最上層的抽象演算法實作 不是效能你說難用 對原po就真的難用?很多人自己沒腦也以為別人沒腦 希望你不是這種人之前有問linklist通常是貼程式碼尋求一些狀況處理兩種情況問題本質不一樣 連這都分不清楚還亂回答
作者: james732 (好人超)   2018-01-11 15:08:00
話說有人會想用python自己實作個linked list出來嗎...?如果原PO問題是在實作的話python應該不是好建議
作者: ilms49898723 (LittleBird)   2018-01-11 15:37:00
寫不出來有可能是1.死在語法 2.死在邏輯如果死在邏輯我不認為換語言有幫助
作者: james732 (好人超)   2018-01-11 15:50:00
我覺得死在邏輯的話學一下debugger有幫助XD
作者: Schottky (順風相送)   2018-01-11 16:11:00
不是啊你在 C/C++ 板推 Python 擺明是來亂的嘛我在其他板不會說 Python 難用,在這個板就一定要大聲說我覺得啊,C 是最好的語言了,其他的語言都應該廢除(戰)
作者: druid0214 (Assassin)   2018-01-11 16:23:00
初學推OO語言 java不錯
作者: uranusjr (←這人是超級笨蛋)   2018-01-11 16:27:00
@Schottky 你這樣不就挑起 C vs C++ 內戰了不過我用經驗告訴你 Python 不太適合拿來學資料結構, 因為課本上要你實作的有 87% 都內建你會寫到人格分裂如果要學「好」資料結構用 C 從頭做一次還是很有幫助
作者: james732 (好人超)   2018-01-11 16:30:00
確實,python的list簡單到根本不用擔心任何實作問題XD
作者: Schottky (順風相送)   2018-01-11 16:37:00
@uranusjr 別這樣我只是推文字數不夠 XDDDD確實課本上的資料結構,語言多半都有內建了還練個○
作者: james732 (好人超)   2018-01-11 16:49:00
練習python的資料結構怎麼正確使用也是一種練習啦....不過就看這算不算是原PO需要的了
作者: cphe (魔鬼藏在垃圾筒裡)   2018-01-11 18:14:00
你用的教科書其實就夠了,我猜應該是你對C不熟~資料結構的實作用pointer其實還蠻直覺得~ 如果你覺得直接看code很複雜,可以上網找你想實作的pseudo code,或是圖解現在網路很方便阿~ 書上不懂的總是可以上網找到更適合理解的換一本書不見得可以解決你的全部問題好比說一個merge sort,看完精神之後就自己動手寫一次能跑的
作者: SecondRun (雨夜琴聲)   2018-01-11 23:45:00
sort我以前好像都去youtube看跳舞影片XD
作者: CoNsTaR ((const *))   2018-01-12 01:00:00
要簡單當然用 Haskell 啊只是有些資料結構做出來會覺得很沒意義就是了
作者: oToToT (屁孩)   2018-01-12 08:57:00
一些資料結構用python明明就很難寫
作者: Darkautism (達卡特森)   2018-01-12 11:53:00
python狂你在偷換概念?原po是要學資料結構不是寫演算
作者: CoNsTaR ((const *))   2018-01-12 12:31:00
樓上求不用演算法的資料結構。。。上面就說了 資結難的地方在演算法難實作 所以有人提供能夠讓演算法簡單點的建議 看懂了嗎?
作者: steve1012 (steve)   2018-01-12 12:59:00
演算法跟資料結構是一體兩面
作者: Lipraxde (Lipraxde)   2018-01-12 17:14:00
增加實作能力的是練習,書是補充理論用的。走迷宮的話是別人告訴你要用DFS、stack走,還是你自己想出要怎麼走的?
作者: freeunixer (御劍客)   2018-01-12 19:22:00
大家本來都不知道,都是聽人家講的.所以你先去把你的 C 課本找出來,先把指標,結構搞好吧.
作者: SecondRun (雨夜琴聲)   2018-01-12 19:33:00
走地圖之前 你先看看你的容器是不是做得出來 可以用
作者: cphe (魔鬼藏在垃圾筒裡)   2018-01-13 00:05:00
跟你寫幾行code沒有關係,是你對程度熟練度不夠,多寫吧如果是程式本身不熟,就把書的習題拿出來一題一題做
作者: Lipraxde (Lipraxde)   2018-01-13 01:06:00
資料結構會教怎麼把程式寫得更快、更好,我修過後回頭看以前自己寫的程式發現許多可以改善的地方。本來程式就不太會寫的話不會修過資料結構就突然變很會寫的。
作者: art1 (人,原來不是人)   2018-01-14 10:20:00
既然已經知道關鍵字,就先去了解DFS是什麼,然後再去看別人的程式碼是怎麼實現用DFS來走地圖的不需要在基礎不好的時後強求自己想出來怎麼寫候但看別人的程式碼的時候需要搞懂每一行寫的內容,知道那些程式碼是在做什麼?像是搬移資料、儲存資料、運算後儲存之類
作者: dmjohnny ( )   2018-01-14 22:17:00
多寫,看完同學的記起來,自己寫一遍,再看書,再寫一遍
作者: kobe8112 (小B)   2018-01-15 00:53:00
建議你先釐清到底是程式應用不熟悉,還是根本搞不懂演算法怎麼套用在題目上,驗證方式就是看自己寫不寫的出能夠完成題目的pseudo code
作者: xjpjeass (人人)   2018-01-15 16:11:00
我也是轉系..資結的實作寫作業我也是很頭痛 可能是同時修一二年級的課 之前沒有修過程式課程 還沒摸透寫程式的感覺 我覺得我的問題跟原po滿像的orz

Links booklink

Contact Us: admin [ a t ] ucptt.com