栈和队列
栈:先进后出 (水瓶模型)缺点(维护不了顺序)
队列:一端进 一端出 先进先出 缺点(数据移动)
两个栈模拟一个队列?
两个队列模拟一个栈?
两边来回倒
剩余一个元素出队
入栈序列 判断哪个不是该序列的出栈序列
1 2 3 4 5
A:3 1 2 4 5 错
B:1 2 3 4 5 对 (入一个出一个)
C:3 2 1 5 4 对 (先入前三个再入后两个)
D:5 3 4 2 1 对
代码?
int[] ar={1,2,3,4,5}
int[] br={3,2,1,5,4}
int i=0 j=0
将ar中的数据入栈,直到等于br[j]停止,判断栈顶元素和j++的元素是否相等,如果相等出栈并j++,如果栈为空或不相等继续入栈
如果i走完了并且栈为空j也走完 则说明是出栈序列。
笔试:循环队列
数组模拟环
对队列的优化——》循环队列
队尾入,队头出
当head==tail 则为空
当tail+1=head 则填充满 需要扩容 浪费掉head前面的一个格子
tail走完每次++;