我建议以下两点
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