우선, Stack과 Queue는 선형 자료구조이다.
A,B 순서의 데이터를 스택에 넣고 뺴면 B,A가 된다.
이를 순서대로 다시 스택에 넣고 빼면 A,B 그대로 된다.
내부적인 동작은 다르지만 결과적으로 들어간 순서대로 나오는 큐와 같다.
관련해서 작성하신 다른 분의 코드가 있어 참고했다.
package Stack;
import java.util.Stack;
/**
* created by victory_woo on 2020/05/06
* Stack 2개를 이용해서 Queue 구현하기.
*/
public class StackWithQueue {
public static void main(String[] args) {
StackQueue<String> queue = new StackQueue<>();
queue.enQueue("A");
queue.enQueue("B");
queue.enQueue("C");
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
}
static class StackQueue<T> {
private Stack<T> inBox;
private Stack<T> outBox;
StackQueue() {
inBox = new Stack<>();
outBox = new Stack<>();
}
void enQueue(T item) {
inBox.push(item);
}
Object deQueue() {
if (outBox.isEmpty()) {
while (!inBox.isEmpty()) {
outBox.push(inBox.pop());
}
}
return outBox.pop();
}
}
}