作者james732 (好人超)
看板C_and_CPP
標題Re: [討論] 想重新學好資料結構
時間Thu Jan 11 15:07:17 2018
我建議以下兩點
1.一定要親自寫過code,不要只"讀書"
2.如果寫過還難以理解,就要善用IDE的功能單步執行與監看式功能
其實我一開始學資料結構的時候
一直覺得很難想像資料間的關係
譬如說
struct Node
{
struct Node *next;
int data;
};
那個next是什麼鬼看書真的很難理解
struct Node n1, n2, n3;
n1.data = 10;
n1.next = &n2;
n2.data = 20;
n2.next = &n3;
n3.data = 30;
n3.next = NULL;
struct Node *now = &n1;
while (now)
{
printf("now->data %d\n", now->data);
now = now->next;
}
那個 now = now->next; 到底又是什麼啊
就算實際寫過,跑過,看到印出10,20,30
還是會覺得很難理解
不過感謝我們有Debugger,可以單步執行並且看到當時的memory
https://i.imgur.com/0FIEiXd.png
實際一跑就知道它們之間的關係
然後在迴圈裡一直按F10,看它在next的時候now會怎麼變化
這樣一步一步慢慢跑,慢慢看
就可以真的理解這個鬼東西到底在做什麼
接下來更複雜的tree之類的也一樣,如果覺得無法想像的話
就給他單步執行下去就對了
這是我當時學習資料結構的方式
看到那個next真的一個一個串起來的時候好感動啊XD
如果原PO還沒用過單步執行與memory monitor
就裝個Visual studio Community吧
https://www.visualstudio.com/downloads/
隨便寫個程式按F10就可以開始探索這個新世界了XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.13.11
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1515654440.A.F6B.html
※ 編輯: james732 (114.136.13.11), 01/11/2018 15:30:51
推 boss0405: 推一下,這對初學者理解真的很有幫助 01/11 17:54
推 cuteSquirrel: 推 01/11 18:50
推 johnny94: 這種建議對初學者很有幫助,想當初也是用這個來看 array 01/11 19:20
→ johnny94: 裡面到底放啥 01/11 19:20
推 Hazukashiine: Linux 的 GDB Frontend 推薦 nemiver 個人覺得好用 01/11 19:57
推 SecondRun: 推 01/11 23:27
推 renna038766: QQ 這我期末範圍耶!!! 01/15 01:22
→ renna038766: 我這邊前幾天也一直想 01/15 01:22
推 ax61316: 推這篇,我的方法也類似。 IDE 至少比GDB親民一些 01/15 20:58