两个栈实现队列代码
stk存储入栈数据
tmp倒置stk数据
队列先进先出,所以必须使用另外一个栈对原来栈数据进行倒置
1 add(?) 不影响,直接入栈
2 peek()与poll()操作几乎相同,必然是要从tmp中访问数据。
如果tmp中为空:则必须将原来stk中数据一次性去全部入tmp栈,因为stk中栈底数据必然是最先入的,则必定要第一个出。
如果tmp不空:则直接访问或出队(出栈操作)即可。
//模拟栈 stk[] 栈, tt栈顶指针
static int[] stk = new int[1000];
static int[] tmp = new int[1000];
static int tt = -1;
static int mm = -1;
static void add(int val) {
stk[++ tt] = val;
}
static void poll() { //必须一次性将stk[]中的数据全部导入tmp中
if (mm < 0) {
while (tt >= 0) {
tmp[++ mm] = stk[tt --];
}
}
mm --;
}
static int peek() { //直接访问tmp[mm] ,也必须一次性将stk[]中的数据全部导入tmp中
if (mm < 0) {
while (tt >= 0) {
tmp[++ mm] = stk[tt --];
}
}
return tmp[mm];
}