질문: 두 개의 스택을 사용하여 대기열을 구현하는 방법, 즉 queue-appendTail(삽입) 및 deleteHead(삭제)를 구현하는 두 가지 메서드를 사용하는 방법입니다.
분석: 핵심 아이디어는 한 스택은 앞으로 저장하고 다른 스택은 뒤로 저장한다는 것입니다. 정방향 저장소 스택은 삽입에 사용되고 역방향 저장소 스택은 삭제에 사용됩니다.
구현된 Java 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다 .
java.util.Stack 가져오기;
공개 클래스 QueneWithTwoStacks<E> {
개인 스택<E> stack1;
개인 스택<E> stack2;
공공 무효 appendTail(E e) {
stack1.push(e);
}
공개 E deleteHead()가 예외를 발생시킵니다. {
if (stack2.size() <= 0) {
동안 (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
if (stack2.size() == 0) {
throw new Exception("큐가 비어 있습니다!");
}
return stack2.pop();
}
}