两个栈实现队列代码

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];
  }