本文共 3367 字,大约阅读时间需要 11 分钟。
用两个栈实现一个队列,该队列必须包含添加和删除的功能,分别完成在队尾添加和对头删除的功能。
设计思路:
代码实现:
class Queue { Stackstack1 = new Stack<>(); Stack stack2 = new Stack<>(); int maxSize1; int maxSize2; public Queue(int maxSize1, int maxSize2) { this.maxSize1 = maxSize1; this.maxSize2 = maxSize2; } public boolean isFull() { if(stack1.size() == maxSize1 && stack2.size() > 0) return true; else return false; } public boolean isEmpty() { if(stack1.size() == 0 && stack2.size() == 0) return true; else return false; } public void add(int value) { if(isFull()) { System.out.println("队列满,无法添加"); return; } else { if(stack1.size() == maxSize1) { while(!stack1.empty()) { stack2.push(stack1.pop()); } } stack1.push(value); } } public int delete() { if(isEmpty()) { throw new RuntimeException("队列空,无法删除"); } if(stack2.isEmpty()) { while(!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.pop(); }}
设计思想:
代码实现:
package Question09;import java.util.LinkedList;import java.util.Queue;/** * 用两个队列来模拟栈 */public class T02 { public static void main(String[] args) { MyStack stack = new MyStack(5, 5); stack.add(5); stack.add(3); stack.add(2); stack.add(1); stack.add(7); stack.add(4); System.out.println(stack.delete()); System.out.println(stack.delete()); }}class MyStack { Queuequeue1 = new LinkedList<>(); Queue queue2 = new LinkedList<>(); int maxSize1; int maxSize2; public MyStack(int maxSize1, int maxSize2) { this.maxSize1 = maxSize1; this.maxSize2 = maxSize2; } public boolean isFull() { if(queue1.size() == maxSize1 || queue2.size() == maxSize2) { return true; } else return false; } public boolean isEmpty() { if(queue1.size() == 0 && queue2.size() == 0) return true; else return false; } public void add(int value) { if(isFull()) { System.out.println("队列满,无法加入"); return; } else { if(!queue1.isEmpty()) { queue1.offer(value); } else { queue2.offer(value); } } } public int delete() { if(isEmpty()) { throw new RuntimeException("队列为空,无法删除"); } else { if(!queue1.isEmpty()) { while(queue1.size() != 1) { queue2.offer(queue1.poll()); } return queue1.poll(); } else { while(queue2.size() != 1) { queue1.offer(queue2.poll()); } return queue2.poll(); } } }}
转载地址:http://objq.baihongyu.com/