第二周学习内容:C语言基础数据结构——链表
大家好,我们现在进入第二周的学习。在第一周,我们完成了C语言中简易内存池管理的实现。本周,我们将重点学习C语言中的基础数据结构之一——链表。
链表的基本概念
链表是一种动态的线性数据结构,由多个节点通过指针连接而成。每个节点包含两个部分:
- 数据域:用于存储实际的业务数据,例如整型(int)、字符型(char)或自定义结构体等;
- 指针域:用于保存下一个节点(或前一个节点)的内存地址,从而实现节点之间的“链接”关系。
所谓“动态”,意味着链表可以在程序运行过程中灵活地增加或删除节点,无需预先确定大小,这与数组有明显区别。
链表的“线性”特性并不是依靠连续的内存空间来实现的,而是通过节点间的逻辑关联构成有序序列。这种机制类似于两个人虽然不在同一位置,但彼此记录对方的位置信息,从而能够依次找到对方,最终形成一个整体的链条结构。
单向链表的构建
单向链表中,每个节点仅包含一个指针域,指向其后续节点。因此,数据只能沿单一方向遍历。
特别需要注意的是,最后一个节点的指针域必须设置为 NULL,表示链表的结束。
双向链表的构建
从名称即可看出,双向链表中的每个节点拥有两个指针域:
- 一个指向前驱节点(即前一个节点);
- 另一个指向后继节点(即后一个节点)。
这样的设计支持从前向后和从后向前两个方向进行遍历,使得插入和删除操作更加高效灵活。不过,相应的实现复杂度也有所提高。
prev
next
后续学习安排
明天我们将继续学习新的内容。由于整体进度较为紧凑,部分练习和总结将在后续空闲时间补充完善。建议大家在课余时间动手实践,尝试完成链表的创建与基本操作,并通过打印函数验证结果是否正确。