题目描述(简单难度)

    用队列实现栈的功能,队列我们只能调用 , peek/pop from front, size, and is empty 的操作。

    解法一

    来一个简单粗暴的方法,粗暴到我开始怀疑我理解错了题意。

    首先肯定是用 去保存我们的数据,push 的话正常的加到队列。

    至于 pop 的话,因为队列是先进先出,栈是先进后出,所以此时我们应该将队列最后一个元素出队列。我们只需要将队列中除去最后一个元素,其他元素全部出队列,剩下的最后一个就是我们要弹出的。然后把之前出了队列的元素再保存起来即可。

    上边代码的受到 的启发,可以稍微优化一下,去掉 temp。我们可以边删除边添加。

    解法二

    参考 这里,一个非常巧妙优雅的方法。只针对 push 做特殊化处理,其他函数直接返回就可以。

    每次 push 一个新元素之后,我们把队列中其他的元素重新排到新元素的后边。

    这道题的话最大的作用就是去理解队列和栈的特性吧,实际中没必要用队列去实现栈,何必呢。

    添加好友一起进步~

    如果觉得有帮助的话,可以点击 给一个 star 哦 ^^

    如果想系统的学习数据结构和算法,强烈推荐一个我之前学过的课程,可以点击 这里 查看详情