利用两个栈实现队列
分析:也就是用两个后进先出,模拟先进先出。这道题其实很简单,就是先进栈A,然后把栈A的数据都出栈到B,要出栈就从B哪里pop(),A负责进,B负责出。
void Push(int *stackA,int &topA,int data)
{
stackA[++topA]=data
}
int Pop(int *stackA,int &topA,int *stackB,int &topB)
{
int ret=-1
if(topA==topB&&topA==-1)
{
printf("the stack is empty!")
return NULL
}
if(topB>=0)
{
ret=stackB[topB--]
}else if(topB<0)
{
for(
{
stackB[++topB]=stackA[topA--]
}
ret=stackB[topB--]
}
return ret
}
void TwoStack()
{
int stackA[MAX]
int stackB[MAX]
int topA,topB
topA=topB=-1
Push(stackA,topA,500)
Push(stackA,topA,100)
int ret1=Pop(stackA,topA,stackB,topB)
printf("%d\n",ret1)
int ret2=Pop(stackA,topA,stackB,topB)
printf("%d\n",ret2)
}
int main()
{
TwoStack()
}