C语言两个栈实现队列
- 思路:先考虑栈结构,类似一个水桶,先进的元素再最下面;如果说像队列一样,先进的元素最先出去,也就是相当于将栈翻一翻,将水桶的水倒进另一个水桶。因此考虑使用栈,以及倒置栈
- 入栈操作:正常入栈1,同时将栈1倒置,重置栈2;
- 出栈操作:从栈2中弹出一个元素,同时使用栈2倒置,重置栈1
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param node int整型
* @return 无
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
static int stack1[1000];
static int top1=0;
static int stack2[1000];
static int top2=0;
void push(int node ) {
// write code here
//先入栈stack1
stack1[top1++]=node;
//将stack1倒入stack2
top2=0;
for(int i=0;i<top1;i++){
stack2[top2++]=stack1[top1-1-i];
}
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param 无
* @return int整型
*/
int pop() {
// write code here
//先从栈2出栈
int ans=stack2[top2-1];
top2--;
//倒置栈
top1=0;
for(int i=0;i<top2;i++)
stack1[top1++]=stack2[top2-1-i];
return ans;
}