您的位置:首页 > 其它

用栈来实现队列的操作

2015-10-06 20:02 417 查看
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());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  队列