这学期的《结构体与算法》课真的太硬核了。之前学数组的时候觉得一切都很自然,下标访问多方便啊。结果到了链表(Linked List)这里,各种指针指来指去,头都被绕晕了。

1. 为什么要有链表?

老师上课讲了一个很形象的例子:数组就像是电影院的座位,大家必须挨着坐,要是中间插进来一个人,后面所有人都得往后挪,效率太低。而链表就像是寻宝游戏,每个人手里拿着下一关的线索(指针),大家可以散落在各处,想插入一个人中间,只需要改一下线索纸条就行。

2. 让我头大的指针

在写单链表的插入操作时,我最大的坑就是忘记保存 `next` 指针。比如要在 A 和 B 之间插入 C,我一上来就 `A->next = C`,结果 B 的地址直接丢了,断链了... 调试了半个下午才发现是这种低级错误。

3. 代码片段(备忘)

为了防止以后忘记,赶紧把标准结构体定义记下来:

struct Node {
    int data;
    struct Node* next;
};
                

只要理解了“节点 = 数据 + 下一个地址”,好像也没那么可怕了。下周要讲二叉树了,希望能由于活着听完这门课吧!加油!