用栈实现队列

题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的
  • 栈操作即可。

  • 1 <= x <= 9
  • 最多调用 100 次 pushpoppeek 和 empty
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)

题解

栈的实现

栈的功能函数的实现-CSDN博客

代码



//开辟、初始化

MyQueue* myQueueCreate() {
    
    MyQueue* obj = (MyQueue*)malloc(sizeof(MyQueue));

    STInit(&obj->push_st);  //不要忘记取地址&
    STInit(&obj->pop_st);

    return obj;
}

void myQueuePush(MyQueue* obj, int x) {

    STPush(&obj->push_st, x);
    
}

int myQueuePop(MyQueue* obj) {

    int pop = myQueuePeek(obj);


    //由于调用了myQueuePeek函数,此时pop栈一定不为空
    STPop(&obj->pop_st);

    return pop;

}

int myQueuePeek(MyQueue* obj) {
    
    if (STEmpty(&obj->pop_st))   //如果popst(是obj的结构成员)为空
    {
        while (!STEmpty(&obj->push_st))     //当不为空,持续进行
        {
            STPush(&obj->pop_st, STTop(&obj->push_st));
            STPop(&obj->push_st);

        }

    }


    return STTop(&obj->pop_st);
}

bool myQueueEmpty(MyQueue* obj) {

    return STEmpty(&obj->push_st) && STEmpty(&obj->pop_st);
    
}

void myQueueFree(MyQueue* obj) {

    STDestroy(&obj->pop_st);
    STDestroy(&obj->push_st);

    free(obj);
    
}

用队列实现栈

用队列实现栈(C)-CSDN博客

相关推荐

  1. 实现队列

    2024-04-05 11:52:04       13 阅读
  2. leetcode-队列实现

    2024-04-05 11:52:04       37 阅读
  3. leetcode-实现队列

    2024-04-05 11:52:04       31 阅读
  4. 232.实现队列

    2024-04-05 11:52:04       20 阅读
  5. 队列实现(C)

    2024-04-05 11:52:04       12 阅读
  6. LeetCode-232. 实现队列 设计 队列

    2024-04-05 11:52:04       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 11:52:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 11:52:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 11:52:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 11:52:04       20 阅读

热门阅读

  1. SQL Server的详细使用教程

    2024-04-05 11:52:04       15 阅读
  2. C#(C Sharp)学习笔记_Enum枚举类型【十三】

    2024-04-05 11:52:04       13 阅读
  3. ultraedit软件使用技巧

    2024-04-05 11:52:04       11 阅读
  4. 达梦体系结构:数据库文件

    2024-04-05 11:52:04       17 阅读
  5. ChatGPT 之 PPT 大师

    2024-04-05 11:52:04       24 阅读
  6. Swagger 简单上

    2024-04-05 11:52:04       15 阅读
  7. 每日一题 六十九期 洛谷 回文日期

    2024-04-05 11:52:04       16 阅读