题解 | #用两个栈实现队列#
用两个栈实现队列
http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6
就像两杯水,接过来,倒回去,每次都出栈顶元素
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param node int整型
* @return 无
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
static int stack1[1000];
static int stack2[1000];
int top1=0;
int top2=0;
void push(int node ) {
// write code here
//数据入栈1
stack1[top1++]=node;
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param 无
* @return int整型
*/
int pop() {
// write code here
//把第一个栈反转一下
for(int i=0;i<top1/2;i++){
int temp1=stack1[i];
stack1[i]=stack1[top1-1-i];
stack1[top1-1-i]=temp1;
}
//把翻转之后的栈1赋值给栈2
for(int i=0;i<top1;i++){
stack2[i]=stack1[i];
}
top2=top1;
//返回值
int temp_return=stack2[top2-1];
top2--;
top1=top2;
//把第二个栈反转一下
for(int i=0;i<top2/2;i++){
int temp2=stack2[i];
stack2[i]=stack2[top2-1-i];
stack2[top2-1-i]=temp2;
}
//把出队后的数值还给栈1
for(int i=0;i<top1;i++){
stack1[i]=stack2[i];
}
return temp_return;
}