Re: [讨论] 想重新学好资料结构

楼主: james732 (好人超)   2018-01-11 15:07:17
我建议以下两点
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
作者: boss0405 (boss)   2018-01-11 17:54:00
推一下,这对初学者理解真的很有帮助
作者: cuteSquirrel (松鼠)   2018-01-11 18:50:00
作者: johnny94 (32767)   2018-01-11 19:20:00
这种建议对初学者很有帮助,想当初也是用这个来看 array里面到底放啥
作者: Hazukashiine (私は幸せです)   2018-01-11 19:57:00
Linux 的 GDB Frontend 推荐 nemiver 个人觉得好用
作者: SecondRun (雨夜琴声)   2018-01-11 23:27:00
作者: renna038766 (草甜圈)   2018-01-15 01:22:00
QQ 这我期末范围耶!!!我这边前几天也一直想
作者: ax61316   2018-01-15 20:58:00
推这篇,我的方法也类似。 IDE 至少比GDB亲民一些

Links booklink

Contact Us: admin [ a t ] ucptt.com