数据结构与算法分析(Java 语言描述)(35)—— 使用两个栈实现一个队列
2017-12-11 15:52
896 查看
思路:
当进行入队操作的时候
检查 stack_2 是否为空
若 stack_2 非空,将 stack_2 中的数据放入 stack_1 中
将需要入队的数据 push 到 stack_1 中
当进行出队操作的时候
检查 stack_1 是否为空
若 stack_1 非空,将 stack_1 的数据放入 stack_2 中
将 stakc_2 的栈顶元素 pop 出栈
大致的示意图
输出结果:
当进行入队操作的时候
检查 stack_2 是否为空
若 stack_2 非空,将 stack_2 中的数据放入 stack_1 中
将需要入队的数据 push 到 stack_1 中
当进行出队操作的时候
检查 stack_1 是否为空
若 stack_1 非空,将 stack_1 的数据放入 stack_2 中
将 stakc_2 的栈顶元素 pop 出栈
大致的示意图
package com.dataStructure.queue; import java.util.Stack; public class UseStackToImplQueue { private Stack<Integer> stack_1; private Stack<Integer> stack_2; private int count; public UseStackToImplQueue(){ stack_1 = new Stack<>(); stack_2 = new Stack<>(); count = 0; } public void enqueue(int num){ // if (stack_1.isEmpty() && stack_2.isEmpty()){ // stack_1.push(num); // }else if (!stack_2.isEmpty()){ // while (!stack_2.isEmpty()){ // stack_1.push(stack_2.pop()); // } // stack_1.push(num); // } while (!stack_2.isEmpty()){ stack_1.push(stack_2.pop()); } stack_1.push(num); count++; } public int dequeue(){ // if (!stack_2.isEmpty()){ // return stack_2.pop(); // }else { // while (!stack_1.isEmpty()){ // stack_2.push(stack_1.pop()); // } // return stack_2.pop(); // } while (!stack_1.isEmpty()){ stack_2.push(stack_1.pop()); } count--; return stack_2.pop(); } public boolean isEmpty(){ return count == 0; } public static void main(String[] args){ UseStackToImplQueue queue = new UseStackToImplQueue(); queue.enqueue(6); queue.enqueue(2); queue.enqueue(1); queue.enqueue(3); queue.enqueue(5); queue.enqueue(7); while (!queue.isEmpty()){ System.out.print(queue.dequeue() + " "); } System.out.println(); System.out.println("----------------------------"); Stack<Integer> stack = new Stack<>(); stack.push(6); stack.push(2); stack.push(1); stack.push(3); stack.push(5); stack.push(7); while (!stack.isEmpty()){ System.out.print(stack.pop() + " "); } } }
输出结果:
相关文章推荐
- 数据结构与算法分析(Java 语言描述)(36)—— 使用两个队列实现一个栈
- (数据结构与算法分析 四)------数组循环队列的实现( Java语言描述)
- (数据结构与算法分析 七)------优先队列中的二叉堆的实现( Java语言描述)
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- 使用数组实现栈和循环队列(JAVA语言)
- 使用两个队列实现一个栈,使用两个栈实现一个队列!
- 两个堆栈实现一个队列 , 利用两个队列实现一个堆栈(Java)
- 使用两个队列实现一个栈,使用两个栈实现一个队列!
- 队列的数组实现_JAVA描述《数据结构与算法分析》
- 算法导论 使用两个队列实现一个栈
- cc150:使用两个栈实现一个队列(两种方法比较)
- 【Java】用两个栈实现一个队列Myqueue类
- java-57-用两个栈实现队列&&用两个队列实现一个栈
- 一个标准的创建和使用事件的语言结构描述和实现
- 数据结构(java语言描述)-- 队列的循环数组实现
- 使用两个Stack类(JDK容器类库中的Stack类)实现一个队列类MyQueue,提供队列的入队列和出队列操作:enQueue和deQueue
- (数据结构与算法分析 八)------插入排序,希尔排序,归并排序的实现( Java语言描述)
- (数据结构与算法分析 三)------栈的实现(包括链栈和数组实现栈 Java语言描述)
- 使用两个队列实现一个栈
- 使用数组实现队列----《数据结构与算法分析---C语言描述》