1. 程式人生 > >兩個佇列實現一個棧(C語言)

兩個佇列實現一個棧(C語言)

本題的思路是先建立queue1和queue2,入棧時直接向queue1裡入佇列,出棧時需要先從queue1中出佇列的同時把數依次進入queue2,直到queue1中到最後一個數為止,然後將queue1中的數出佇列,再將queue2中的數倒回queue1,這樣就實現了一個棧。
實現程式碼如下:

//兩個佇列實現一個棧入棧
void StackPush(Queue *p1, QDataType data)
{
    if (p1 == NULL)
    {
        return;
    }
    QueuePush(p1, data);
}

//兩個佇列實現一個棧出棧
void StackPop(Queue
*p1, Queue *p2) { if (p1 == NULL || p2 == NULL) { return; } while (p1->size != 1) { QueuePush(p2, p1->pFront->data); QueuePop(p1); } QueuePop(p1); while (p2->size != 0) { QueuePush(p1, p2->pFront->data); QueuePop(p2); } }