队列 栈的java_队列实现栈(java)

该博客介绍如何利用两个队列来模拟栈的功能。通过在出栈时将正式队列除最后一个元素外的所有元素转移到预备队列,然后从正式队列中弹出栈顶元素,实现了栈的后进先出特性。同时,当需要入栈时,直接将元素加入正式队列。这种方法巧妙地用队列实现了栈的操作。
摘要由CSDN通过智能技术生成

栈的特性是后进先出。栈的两个主要操作,一个是出栈,一个是入栈。

队列的特性是先进先出。队列的两个主要操作,一个是队尾追加元素,一个是队首取出元素。

要用队列实现栈,那么需要两个队列,一个正式队列,一个预备队列。正式队列相当于栈,用来存储入栈的元素;预备队列用来在出栈的时候,将队首到队尾前一个元素进行临时存储,待出栈操作完成后,再将预备队列中的元素取出放到正式队列中。

代码实现如下:

package algorithm;

import java.util.LinkedList;

import java.util.Queue;

public class StackByQueue {

public static void main(String[] args) {

MyStack stack = new MyStack();

stack.push(1);

stack.push(2);

stack.push(3);

System.out.println(stack.pop());

System.out.println(stack.pop());

}

}

class MyStack {

Queue normalQueue = new LinkedList();// 正式队列

Queue prepareQueue = new LinkedList();// 预备队列

// 出栈

public Object pop() {

while (normalQueue.size() > 1) {

prepareQueue.add(normalQueue.poll());

}

Object poll = normalQueue.poll();

while (prepareQueue.size() > 0) {

normalQueue.add(prepareQueue.poll());

}

return poll;

}

// 入栈

public void push(Object obj) {

normalQueue.add(obj);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值