数据结构问题,如何用两个队列实现栈操作!求大神!
栈是先进后出,而队列是先进先出,不知如何用队列实现栈的操作,求各位解答
就是把队列做缓存空间
假设有队列 A,B
push: A队列空 就插入B队列,B队列空就插入A队列
pop : A队列空,将B队列中的数据取出存入A队列,直到B 只剩1个数据,再讲这个直接取出;
总之就是这样不停地换
void pop(Stack *S, ElemType *e) { ElemType tmp; if (StackEmpty(*S)) return; if (QueueEmpty(S->queue1)) { while (1 < QueueCount(S->queue2)) { DeQueue(&S->queue2, &tmp); EnQueue(&S->queue1, tmp); } DeQueue(&S->queue2, e); } else { while (1 < QueueCount(S->queue1)) { DeQueue(&S->queue1, &tmp); EnQueue(&S->queue2, tmp); } DeQueue(&S->queue1, e); } } void push(Stack *S, ElemType e) { if (StackFill(*S)) return; if (QueueEmpty(S->queue1)) { EnQueue(&S->queue2, e); } else { EnQueue(&S->queue1, e); } }