그래서 하나의 대기열로 스택을 구현하려고 시도했지만 제대로 작동하는 것처럼 보였습니다. 그러나 온라인에서 두 가지 대기열을 사용하는 솔루션의 대부분이 2 개의 대기열을 사용하기 때문에 문제가 있는지 확실하지 않습니다. 내 구현에 문제가 있다면 아무에게 말해 줄 수 있습니까?Java : 하나의 대기열에 스택을 구현하면 문제가 발생합니까?
public class MyStack<T> {
/**
* @param args
*/
private Queue<T> q = new LinkedList<T>();
public MyStack(){
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MyStack<String> s = new MyStack<String>();
s.push("1");
s.push("2");
s.push("3");
s.push("4");
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
public void push(T s){
q.offer(s);
}
public T pop(){
int n = q.size();
for(int i = 0; i < n-1; i++){
q.offer(q.poll());
}
return q.poll();
}
}
출력 :
4
3
2
1
널
코드 검토를 원하면이 사이트가 아닌데 예기치 않은 동작이 있습니까? – nachokk
예기치 않은 동작이 없습니다. 나는 왜 대부분의 온라인 솔루션이 잘 작동하는 것처럼 보이는지 2 개의 대기열을 사용하는 이유가 궁금합니다. – user2017502
2 개의 대기열로 구현 된 스택을 보지 못했습니다. 또한 그 이유는'Queue'는 FIFO이고 Stack은 LIFO입니다. – zapl