如果有不对的地方请发邮件到995232184@qq.com。若是不太明白思路或者过程也可发邮件给我。
import java.util.Stack;
/**
* 题目:用两个栈实现队列
* 描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,
* 分别完成在队尾部插入结点和在队列头删除结点的功能。
* 解答:栈的特点是先进后出,队列的提点是先进先出,用两个栈正好能把顺序反过来实现类似队列的操作。
* 具体的实现是一个做为压入栈stackPush,在压数据时只往这个栈中压入,一个做为弹出栈stackPop,弹出数据时只从这个栈弹出。
* but,有两条原则必须遵循
* 1.如果stackPush要往stackPop中压入数据,那么必须一次性把stackPush中的数据全部压入
* 2.stackPop不为空,stackPush绝对不能向stackPop中压入数据
*
*
*/
public class test07 {
public static Stack<Integer> stackPush = new Stack<>();
public static Stack<Integer> stackPop = new Stack<>();
public static void appendTail(int x){ //队尾加入结点
stackPush.push(x);
}
public static int deleteHead() { //队头删除结点
if(stackPop.isEmpty() && stackPush.isEmpty()){
System.out.println("queue is impty");
} else if(stackPop.isEmpty()){
while(!stackPush.isEmpty()){
stackPop.push(stackPush.pop());
}
}
return stackPop.pop();
}
}