两个栈实现一个队列
2011-01-03 20:33
267 查看
#include<stdio.h> bool STACK_EMPTY(int &top) { if(top==0) return true; else return false; } void PUSH(int *S,int x,int &top) { top=top+1; S[top]=x; } int POP(int *S,int &top) { if(STACK_EMPTY(top)) return -1; else top=top-1; return S[top+1]; } void Transfer(int *S1,int &top1,int *S2,int &top2)//从栈S1中将元素转移到栈S2中 { int p; while(top1>=1) { p=POP(S1,top1); PUSH(S2,p,top2); } } void main() { int S1[10],S2[10]; int top1=0,top2=0; //压栈S1,相当于进队列。 PUSH(S1,1,top1); PUSH(S1,2,top1); PUSH(S1,3,top1); PUSH(S1,4,top1); PUSH(S1,5,top1); //如果要出队列,则需要将栈S1中的元素全部转移到栈S2中,然后让栈S2出栈的元素就是队列的元素。 Transfer(S1,top1,S2,top2); int p=POP(S2,top2); printf("%d/n",p); /* 如果一直出栈则不需要再次转移,但是如果又有元素需要进队列,则需要再次进行Transfer()操作 S1负责元素进队列,S2负责元素出队列。 */ }
相关文章推荐
- 剑指offer之面试题7用两个栈实现一个队列
- 用两个栈来实现一个队列
- 用两个栈实现一个队列
- 使用两个栈实现一个队列
- 剑指offer--两个栈实现一个队列
- JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)
- 算法题:两个栈实现一个队列
- Python剑指offer之两个栈实现一个队列-两个队列实现一个栈
- 面试题 7: 两个栈实现一个队列
- 用两个栈实现一个队列(转载)
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- leetcode解题之225 # Implement Stack using Queuest Java版 (用两个队列实现一个栈)
- 用两个栈实现一个队列的功能...
- 两个队列实现一个栈
- java两个栈实现一个队列
- 《剑指Offer》用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
- 两个栈实现一个队列
- 两个队列实现一个栈
- 用两个队列实现一个栈
- 两个栈实现一个队列-思路