标签:测试用例 组元 out info 用例 就会 app mamicode 先进先出
在数据结构中,栈本身就具有倒序的作用,因此,如果在一组元素全部进栈后,最后进栈的会最先被弹出,而队列是最先进入的元素就最先被弹出。
如图:如果以 1 2 3 4 分别进入栈和队列,左为栈的弹出结果,右为队列的出队结果,刚好相反
于是,如果把栈得到的结果再次进行一次入栈操作,再出栈时得到的结果就会再次回到1 2 3 4
所以思路就是,先全部进栈,出栈,把得到的结果再次执行同样的进栈操作,那么此时栈顶就对应着想象中的队列的队首了
public class CQueue {
//两个栈,一个出栈,一个入栈
private Stack<Integer> stack1;
private Stack<Integer> stack2;
public CQueue() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void appendTail(int value) {
stack1.push(value);
}
public int deleteHead() {
if(!stack2.isEmpty()){
return stack2.pop();
}else{
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return stack2.isEmpty() ? -1 : stack2.pop();
}
}
public static void main(String[] args) {
CQueue cqueue = new CQueue();
cqueue.appendTail(1);
cqueue.appendTail(3);
cqueue.appendTail(5);
cqueue.appendTail(7);
int param_1 = cqueue.deleteHead();
System.out.println("出队:" + param_1);
int param_2 = cqueue.deleteHead();
System.out.println("出队:" + param_2);
}
从结果可得到,符合了队列先进先出的特点,也是想要的结果
标签:测试用例 组元 out info 用例 就会 app mamicode 先进先出
原文地址:https://www.cnblogs.com/we1yu4n/p/14742885.html