兩個佇列實現一個棧(C語言)
阿新 • • 發佈:2019-01-02
本題的思路是先建立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);
}
}