Java通过栈实现队列,队列实现栈 | 您所在的位置:网站首页 › java里面stackpush › Java通过栈实现队列,队列实现栈 |
如何仅用队列结构实现栈结构? 1、准备两个队列:data和help 2、假设往data中push数据1、2、3、4、5,当需要poll出5时,先将1、2、3、4 add进help队列中, 在将data中的5 poll出来返回 3、然后执行swap,交换data个help性质 4、当需要pop出4时,步骤和2、3基本一致 如何仅用栈结构实现队列结构? 1、准备两个栈:stackPush和stackPop 2、假设往栈stackPush中push进五个数:1、2、3、4、5,然后需要pop出1时,先将stackPush中所有数据 全部add到stackPop中,然后stackPop通过pop出1返回 3、需要pop出2时,操作步骤与2基本一致 代码如下: import java.util.LinkedList; import java.util.Queue; import java.util.Stack;public class StackAndQueueConvert_03 {//两个栈实现队列结构public static class TwoStacksQueue {private Stack stackPush;private Stack stackPop;public TwoStacksQueue() {stackPush = new Stack();stackPop = new Stack();}public void push(int pushInt) {stackPush.push(pushInt);}public int poll() {if (stackPop.empty() && stackPush.empty()) {throw new RuntimeException("Queue is empty!");} else if (stackPop.empty()) {while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.pop();}public int peek() {if (stackPop.empty() && stackPush.empty()) {throw new RuntimeException("Queue is empty!");} else if (stackPop.empty()) {while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.peek();}}//两个队列实现栈结构public static class TwoQueuesStack {private Queue data;private Queue help;public TwoQueuesStack() {data = new LinkedList();help = new LinkedList();}public void push(int pushInt) {data.add(pushInt);}public int peek() {if (data.isEmpty()) {throw new RuntimeException("Stack is empty!");}while (data.size() != 1) {help.add(data.poll());}int res = data.poll();help.add(res);swap();return res;}public int pop() {if (data.isEmpty()) {throw new RuntimeException("Stack is empty!");}while (data.size() > 1) {help.add(data.poll());}int res = data.poll();swap();return res;}private void swap() {Queue tmp = help;help = data;data = tmp;}}}
|
CopyRight 2018-2019 实验室设备网 版权所有 |