用两个栈实现队列

来源:互联网 发布:网络打鱼游戏平台 编辑:程序博客网 时间:2024/05/28 06:08

   编写一个类,用两个栈实现一个队列,支持队列的基本操作(add,poll,peek)

 

//编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)import java.util.Stack;public class TwoStackQueue{            Stack <Integer> stack1;  //一个栈用于数据的压入      Stack <Integer> stack2;  //一个栈用于数据的弹出           public TwoStackQueue()      {      stack1=new Stack<Integer>();      stack2=new Stack<Integer>();      }      //向队列中添加数据      public void add(int num)      {                stack1.push(num);      }      //从队列中弹出数据      public int poll()      {      if(stack2.isEmpty()&&stack1.isEmpty())      {      throw new RuntimeException("Queue is Empty!");      }      else if(stack2.isEmpty())      {      while(!stack1.isEmpty())      {      stack2.push(stack1.pop());      }      }        return stack2.pop();      }      //获得对列头的数据      public int peek()      {        if(stack2.empty()&&stack1.empty())      {      throw new RuntimeException("Queue is Empty!");      }      else if(stack2.isEmpty())      {      while(!stack1.isEmpty())      {      stack2.push(stack1.pop());      }      }        return stack2.peek();      }     public static void main(String []args)     {     TwoStackQueue  queue=new TwoStackQueue();     queue.add(1);     queue.add(2);     queue.add(3);     queue.add(4);          System.out.println(queue.poll());     System.out.println(queue.poll());     System.out.println(queue.peek());          }}

 左神编写的代码如下:

import java.util.Stack;public class Problem_02_TwoStacksImplementQueue {public static class TwoStacksQueue {public Stack<Integer> stackPush;public Stack<Integer> stackPop;public TwoStacksQueue() {stackPush = new Stack<Integer>();stackPop = new Stack<Integer>();}public void add(int pushInt) {stackPush.push(pushInt);}public int poll() {if (stackPop.empty() && stackPush.empty()) {throw new RuntimeException("Queue is empty!");} else if (stackPop.empty()) {while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.pop();}public int peek() {if (stackPop.empty() && stackPush.empty()) {throw new RuntimeException("Queue is empty!");} else if (stackPop.empty()) {while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.peek();}}public static void main(String[] args) {TwoStacksQueue test = new TwoStacksQueue();test.add(1);test.add(2);test.add(3);System.out.println(test.peek());System.out.println(test.poll());System.out.println(test.peek());System.out.println(test.poll());System.out.println(test.peek());System.out.println(test.poll());}}

原创粉丝点击