我建議以下兩點
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