您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

用队列实现栈(图文)

第十三双眼睛2023-12-04【数据结构与算法】人已围观

简介用队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。
实现 MyStack 类:
void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

思路:创建两个队列,队列一用来存储元素,队列二用来临时辅助,当有元素入栈时,先直接将元素入队列二,如果队列一不为空的话,就让队列一的元素都出队列,然后入队列二,完毕以后,交换两个队列的指针,此时就完成了元素入栈,出栈时,直接将队列一中的元素出队列,并且栈顶指针指向队列一中的第一个元素,peek方法,直接返回队列一的第一个元素即可,判断空的方法直接判断队列一是否为空就行。代码如下:
public class MyStack {
    int top;
    Queue<Integer> queue1 =  null;
    Queue<Integer> queue2 =  null;
    public MyStack() {
        queue1 = new LinkedList<Integer>();
        queue2 = new LinkedList<Integer>();
    }
    public void push(int x) {
        queue2.offer(x);
        top = x;
        while (!queue1.isEmpty()) {
            queue2.offer(queue1.poll());
        }
        Queue<Integer> temp = queue1;
        queue1 = queue2;
        queue2 = temp;
    }
    public int pop() {
        Integer res = queue1.poll();
        if (!queue1.isEmpty()) {
            top = queue1.peek();
        } else {
            top = 0;
        }
        return res;
    }
    public int top() {
        return top;
    }
    public boolean empty() {
        return queue1.isEmpty();
    }
}

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计246篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们