创建两个栈
typedef struct {
Stack push;
Stack pop;
} MyQueue;
功能一:往队列里输入数据
将数据输入到push里面
void myQueuePush(MyQueue* obj, int x) {
StackPush(&obj->push,x);
}
功能二:从队列里取出数据
(1)若pop为空,则将push里的数据全部导入pop里,再将pop里数据按照队列的方式取出
(2)若pop不为空,则将pop里数据直接按照队列的方式取出
int myQueuePop(MyQueue* obj) {
if(obj->pop.top==0)
{
while(obj->push.top>0)
{
StackPush(&obj->pop,StackTop(&obj->push));
StackPop(&obj->push);
}
}
int ret=StackTop(&obj->pop);
StackPop(&obj->pop);
return ret;
}
功能三:判断队列是否为空
bool myQueueEmpty(MyQueue* obj) {
if(StackEmpty(&obj->pop)&&StackEmpty(&obj->push))
return true;
else
return false;
}
功能四:销毁队列
void myQueueFree(MyQueue* obj) {
DestoryStack(&obj->push);
DestoryStack(&obj->pop);
free(obj);
}