0
点赞
收藏
分享

微信扫一扫

利用栈实现队列

小云晓云 2022-03-30 阅读 48
c语言

创建两个栈

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);

}
举报

相关推荐

0 条评论