数据结构/栈实现队列

简介: 数据结构/栈实现队列

前言

在学习数据结构的过程当中,我们会学到栈和队列,在本篇文章中,重点讲解的是栈实现队列,故关于栈和队列的讲解只是简单带过。



一、栈

栈是一种后进先出的线性表,即只能在固定的一端进行插入和删除。

栈 方法

Stack() 构造一个空的栈
E push(E e) 将e入栈,并返回e
E pop() 将栈顶元素出栈并返回
E peek() 获取栈顶元素
int size() 获取栈中有效元素个数
boolean empty() 检测栈是否为空

二、队列

队列是一种先进先出的线性表,即只能在一端进行插入,另一端进行删除。

队列 方法

boolean offer(E e) 入队列
E poll() 出队列
E peek() 获取队头元素
int size() 获取队列中有效元素个数
boolean isEmpty() 检测队列是否为空

三、栈实现队列

结合栈和队列的简单示意图

不难发现一个栈难以实现队列,故使用两个栈演示尝试。


我们可以发现,使用一个栈进行入队列,另一个栈进行出队列,正好可以实现我们的想法。


故代码如下:

class MyQueue {
    Stack<Integer> queue1;//入
    Stack<Integer> queue2;//出
    public MyQueue() {
        queue1 = new Stack<>();
        queue2 = new Stack<>();
    }
    public void push(int x) {
        queue1.push(x);
    }
    public int pop() {
        int x = 0;
        if(queue2.isEmpty()){
            while(!queue1.isEmpty()){
                queue2.push(queue1.pop());
            }
        }
        x = queue2.pop();
        return x;
    }
    public int peek() {
        int x = 0;
        if(queue2.isEmpty()){
            while(!queue1.isEmpty()){
                queue2.push(queue1.pop());
            }
        }
        x = queue2.peek();
        return x;
    }
    public boolean empty() {
        return queue1.isEmpty()&&queue2.isEmpty();
    }
}
}

结语

关于栈实现队列,以上就是今天的内容,本文仅仅简单介绍了一下。
这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位🔎点赞👍评论收藏⭐,谢谢!!!

如果有什么疑问或不同的见解,欢迎评论区留言哦。

相关文章
|
4天前
|
前端开发 JavaScript 算法
JavaScript 中实现常见数据结构:栈、队列与树
JavaScript 中实现常见数据结构:栈、队列与树
|
5天前
|
存储 编译器 C语言
数据结构——顺序队列与链式队列的实现-2
数据结构——顺序队列与链式队列的实现
数据结构——顺序队列与链式队列的实现-2
|
5天前
|
存储 C语言
数据结构——顺序队列与链式队列的实现-1
数据结构——顺序队列与链式队列的实现
数据结构——顺序队列与链式队列的实现-1
|
5天前
|
存储 NoSQL C语言
数据结构——顺序栈与链式栈的实现-2
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-2
|
5天前
|
存储 C语言
数据结构——顺序栈与链式栈的实现-1
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-1
|
5天前
栈的基本应用
栈的基本应用
14 3
|
5天前
栈与队列理解
栈与队列理解
13 1
|
5天前
|
存储 算法
数据结构与算法 栈与队列
数据结构与算法 栈与队列
12 0
数据结构与算法 栈与队列
|
5天前
|
C++
数据结构(顺序队列 循环队列
数据结构(顺序队列 循环队列
11 0
|
5天前
|
C++
数据结构(共享栈
数据结构(共享栈
9 0