两个栈实现一个队列以及两个队列实现一个栈(Java)

两个栈实现一个队列

import java.util.Stack;{Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();(int node) {stack1.push(node);}() {if(stack2.size()<=0){while(stack1.size()>0){/*int data = stack1.peek();//查看栈顶元素,但不移除它stack1.pop();//弹出栈顶元素stack2.push(data);//压入*/stack2.push(stack1.pop());}}if(stack2.isEmpty()){try {throw new Exception(“queue is empty.”);} catch (Exception e) {}}/*** int head = stack2.peek();* stack2.pop();*/int head = stack2.pop();return head;}}两个队列实现一个栈

import java.util.ArrayDeque;import java.util.Queue;public class Demo08 {Queue<Integer> queue1 = new ArrayDeque<>();Queue<Integer> queue2 = new ArrayDeque<>();(int node) {//两个栈都为空时,优先考虑queue1if (queue1.isEmpty()&&queue2.isEmpty()) {queue1.add(node);return;}//如果queue1为空,queue2有元素,直接放入queue2if (queue1.isEmpty()) {queue2.add(node);return;}if (queue2.isEmpty()) {queue1.add(node);return;}}() {//两个栈都为空时,没有元素可以弹出if (queue1.isEmpty()&&queue2.isEmpty()) {try {throw new Exception(“stack is empty”);} catch (Exception e) {}}//如果queue1为空,queue2有元素,, 将queue2的元素依次放入queue1中,直到最后一个元素,我们弹出。if (queue1.isEmpty()) {while (queue2.size()>1) {queue1.add(queue2.poll());}return queue2.poll();}if (queue2.isEmpty()) {while (queue1.size()>1) {queue2.add(queue1.poll());}return queue1.poll();}return (Integer) null;}(String[] args) {Demo08 demo08 = new Demo08();demo08.push(1);demo08.push(2);demo08.push(3);demo08.push(4);System.out.println(demo08.pop());System.out.println(demo08.pop());demo08.push(5);System.out.println(demo08.pop());System.out.println(demo08.pop());System.out.println(demo08.pop());}}

学习不是人生的全部,但学习都征服不了,那我还能做什么?

两个栈实现一个队列以及两个队列实现一个栈(Java)

相关文章:

你感兴趣的文章:

标签云: