【发布时间】:2013-08-05 12:56:48
【问题描述】:
所以我尝试用一个队列实现一个堆栈,它似乎可以工作,但我不确定它是否有问题,因为我在网上看到的大多数解决方案都使用两个队列。谁能告诉我我的实施是否有问题?
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
空
【问题讨论】:
-
如果您想对这不是网站进行代码审查,您是否有意外行为?
-
没有意外行为。我只是想知道为什么大多数在线解决方案使用两个队列,而一个似乎工作正常。
-
从未见过使用 2 个队列实现的堆栈,您见过的解决方案是什么?另外,为什么
Queue,因为那是先进先出,堆栈是后进先出。 -
我找到的两个队列实现在这里:stackoverflow.com/questions/688276/…
-
我在一次采访中被要求这样做。我没有想出这种情况......