您的位置:首页 > 其它

用两个队列实现一个栈

2015-10-22 08:32 441 查看
1.入栈时,将元素放入队列q1

2.出栈时,先将q1中所有元素出队列并放入队列q2,保留q1中最后一个元素,将其输出;然后将q2中所有元素出队列并放回q1

package me.wcy.j2se.datastructure;

import java.util.LinkedList;
import java.util.Queue;

/**
* 两个队列实现一个栈
*
* @author chenyan.wang
*
*/
public class MyStack<E> {

public static void main(String[] args) {
MyStack<Integer> stack = new MyStack<>();
stack.push(1);
stack.push(2);
System.out.println("栈顶元素:" + stack.pop());
System.out.println("栈顶元素:" + stack.pop());
}

private Queue<E> q1;
private Queue<E> q2;

public MyStack() {
q1 = new LinkedList<>();
q2 = new LinkedList<>();
}

public void push(E e) {
q1.add(e);
}

public E pop() {
while (q1.size() > 1) {
q2.add(q1.poll());
}
E e = q1.poll();
while (!q2.isEmpty()) {
q1.add(q2.poll());
}
return e;
}

}

输出:

栈顶元素:2

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