スタックによるキューの操作
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());
}
}