您的位置:首页 > 产品设计 > UI/UE

【算法导论学习-19】1个stack实现queue

2014-08-23 18:52 357 查看
《算法导论》:236页10.1-6,10.1-7,要求实现:两个stack实现queue;两个queue实现stack。

参考:/article/4722593.html讲解了原理。

讨论区:http://stackoverflow.com/questions/69192/how-to-implement-a-queue-using-two-stacks有一个人回答实现了“1个stack实现queue”。

摘录如下:

public class QueueFromSingleStack<E> {
private java.util.Stack<E> stack = new java.util.Stack<E>();

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
QueueFromSingleStack<Integer> queueFromSingleStack=new QueueFromSingleStack<>();
queueFromSingleStack.insert(1);
queueFromSingleStack.insert(-2);
queueFromSingleStack.remove();
System.out.println(queueFromSingleStack.remove());
}
/*关键步骤,其实是用递归的方式将内存作为第二个临时stack*/
public void insert(E elem) {
if (!stack.empty()) {
E topElem = stack.pop();
insert(elem);
stack.push(topElem);
}
else
stack.push(elem);
}

public E remove() {
return stack.pop();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: