java代码:
import java.util.ArrayList; /* * 自定义栈 */ class MyStack { private ArrayList<Object> stack; public MyStack() { stack = new ArrayList<Object>(); } public Object pop() { if(stack.size() == 0) { return null; } return stack.remove(stack.size() - 1); } public void push(Object o) { stack.add(o); } public int depth() { return stack.size(); } } /* *自定义队列 */ class MyQueue { private MyStack myEnqueue, myDequeue; public MyQueue() { myEnqueue = new MyStack(); myDequeue = new MyStack(); } public int length() { return myEnqueue.depth() + myDequeue.depth(); } public void enqueue(Object o) { myEnqueue.push(o); } public Object dequeue() { if(this.length() == 0) { System.out.println("the queue is empty !"); return null; } if(myDequeue.depth() == 0) { transfer(); } return myDequeue.pop(); } public boolean isEmpty() { if(this.length() == 0) { return true; } else { return false; } } private void transfer() { int depth = myEnqueue.depth(); for(int i = 0; i < depth; i++) { myDequeue.push(myEnqueue.pop()); } } } /* * 测试类 */ public class Test { public static void main(String[] args) { MyQueue myQueue = new MyQueue(); System.out.println("------入队------"); myQueue.enqueue(10); myQueue.enqueue(20); myQueue.enqueue(30); System.out.println("队列长度:" + myQueue.length()); System.out.println("------出队------"); System.out.println("出队:" + myQueue.dequeue()); System.out.println("出队:" + myQueue.dequeue()); System.out.println("出队:" + myQueue.dequeue()); System.out.println("出队:" + myQueue.dequeue()); } }
原文:http://my.oschina.net/lovewxm/blog/513808