思想
栈的特性在于先进后出,队列的特性是先进先出。
一个栈A用于接收数据,另外一个栈B用来输出数据,栈A中的数据要想输出,要全部先放B中输出,这样出来的就是先进的。
代码实现
import java.util.Stack;
/**
* @author 阳光大男孩!!!
*/
public class MyQueue {
/**用于接收的栈*/
private Stack<Integer> stackA ;
/**用于输出的栈*/
private Stack<Integer> stackB ;
public MyQueue()
{
stackA = new Stack<>();
stackB = new Stack<>();
}
public void join(int value)
{
stackA.push(value);
}
public int pop()
{
if(this.empty())
{
System.out.println("队列为空!");
}
if(stackB.empty())
{
while(!stackA.empty())
{
stackB.push(stackA.pop());
}
}
return stackB.pop();
}
public boolean empty()
{
if(stackA.empty()&&stackB.empty())
{
return true;
}
return false;
}
public static void main(String[] args) {
MyQueue myQueue = new MyQueue();
myQueue.join(1);
myQueue.join(2);
myQueue.join(3);
System.out.println(myQueue.pop());
System.out.println(myQueue.pop());
myQueue.join(4);
System.out.println(myQueue.pop());
System.out.println(myQueue.pop());
}
}