一条考研狗的日常坚持
从今天起,我就要坚持每天学几课数据结构,争取将每天的代码完全掌握,手敲才是王道,看懂不是真正的懂,相信自己,我可以的!加油!
这里并不是将每一个知识都会写在上面,我会贴出我每天的代码,我不会将源码贴出来让你们复制哟,因为数据结构学习的最好的方法就是自己敲!我还会写一些重要的点,有兴趣的可以一起哦,参照的教程是《2021王道考研全程》
编译器:VS2019(真的很好用)
PS:不出意外应该会每天更新
顺序表
静态实现
- 用静态的“数组”存放数据
- 连续的存储空间
- 空间容量一开始就确定好,且无法改变
代码区域:
动态分配
- 需要用指针指向分配的动态数组
- 当数据存满了以后,可以使用malloc函数动态扩展数组的容量
L.data = (int)malloc((InitSize + len) * sizeof(int));* - 将原数据复制到新的拓展区域,并且用free释放原区域
代码区域:
顺序表的特点
顺序表的插入与删除
插入操作中重要的点
- 注意代码的健壮性,要判断插入的位置是否合法
- 注意开始往后移位的时候的起始与结束的位置
- 时间复杂度
代码区域
删除操作中重要的点
- 注意代码的健壮性,要判断删除的位置是否合法
- 注意开始往后移位的时候的起始与结束的位置
- 因为要知道删除的数值大小,所以我们用引用型变量&e负责带回删除的值
- 时间复杂度
代码区域
顺序表的查找
按位查找中重要的点
- 直接用下标得到值
- 时间复杂度均为O(1)
代码区域
按值查找中重要的点
- 从第一个元素往后检索即可
- 时间复杂度
代码区域
链表
单链表
不带头节点的单链表的定义与初始化
- 要表示单链表时,只需声明一个头指针L,指向单链表
- LinkList----强调这是一个单链表
LNode*----强调这是一个节点
代码区域
带头节点的单链表的定义与初始化
写代码更方便
代码区域