课堂笔记
2024/03/12
- 括号匹配问题
- 数组栈和链式栈
链式栈需要用头插法
2024/03/13
- 括号匹配,返回前记得把栈free一下,不然有内存泄漏
- 入队列是 1 2 3 4
出队列也一定是 1 2 3 4 - 队列需要定义两个结构体
struct QueueNode 和 struct Queue
2024/03/14
- 栈没有访问栈底元素的功能,如果想要访问栈底元素,需要将栈pop到只剩一个元素
- 循环队列,如果使用单链表来实现结构,获取队列尾元素十分不方便,因为rear指针指向的尾元素的下一个结点
解决方法:
1. 双向链表
2. 增加一个rearPrev指针
3. 遍历获取队尾数据 - 循环队列个数公式 推导
X X X X X X
0 1 2 3 4 5
front rear
size = rear - front
X X X X X X
0 1 2 3 4 5
rear front
size = N - front +rear < N
当rear在front后时,size = rear - front = (N - front +rear) % N
当rear在front前时,size = N - rear - front = (N - front +rear) % N
两种情况共用一个等式,所以循环对列个数公式为N - front +rear) % N