题目描述:
解题思路:
创建两个栈,一个用于入数据,一个用于出数据。分别是pushST和popST;
1.如果是入数据就直接入进pushST
2.如果是出数据,先检查popST中有无数据,如果有数据,就直接出。如果没数据,就将pushST中的数据放进popST中,再从popST中出数据。
当pushST中的数据入到popST时,数据是顺序的,刚好满足队列的条件,直接出
用c语言实现栈,没法直接引用,这里需要自己创建一个栈,在完成上述操作。如果还不会栈的小伙伴可以看看我的这篇博客 【数据结构】栈【详解】૮₍ ˃ ⤙ ˂ ₎ა-优快云博客
栈的实现:
//栈的声明与定义 typedef int STDataType;//定义栈中的数据类型 struct Stack { STDataType* a;//用于指向后续开辟的空间 int top; // 栈顶 int capacity; // 容量,方便增容 }; //typedef struct Stack ST; typedef struct Stack Stack; //初始化栈 void StackInit(Stack* pst); //摧毁栈 void StackDestroy(Stack* pst); //入栈 void StackPush(Stack* pst, STDataType x); //出栈 void StackPop(Stack* pst); //返回栈顶元