//面试题09. 用两个栈实现队列
//用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,
//分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
package array;
import java.util.Stack;
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/
public class CQueue {
Stack<Integer> stack1;//先进后出,主stack
Stack<Integer> stack2;//用于转移数据
int size;
public CQueue() {
stack1 = new Stack<>();
stack2 = new Stack<>();
size = 0;
}
public void appendTail(int value) {
stack1.push(value);
size++;
}
public int deleteHead() {
if(size==0) //Stack不能调length size= stack1.size();
return -1;
int delete=-1;//这里要先定义一下,否则要是在for里面才定义,delete的作用域到不了return;
for(int i =0;i<size;i++) {
if(i==(size-1)) {
delete = stack1.pop();
break;
}
stack2.push(stack1.pop());
}
size--;
while(!stack2.isEmpty()) {
stack1.push(stack2.pop());
}
return delete;
}
public static void main(String[] args) {
int[] a = new int[]{1,4,6,7,2,3,5,4,6,9,0,1,4,3};
CQueue c = new CQueue();
c.appendTail(3);
c.appendTail(2);
c.deleteHead();
}
}
06-01
5209
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-18
07-18
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交