剑指offer--面试题7:用两个栈实现队列--Java实现
来源:互联网 发布:wol网络唤醒 编辑:程序博客网 时间:2024/06/06 08:24
题目描述:
用两个栈实现队列。队列的声明如下,请实现它的两个函数appendTail 和 deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
解题思路:
首先,栈的规则是先进后出,队列的规则是先进先出。经过两侧先进后出之后就变成了先进先出。所以,两次进栈出栈,便成了队列。
代码如下:
import java.util.Stack;public class CQueue<T> { private Stack<T> stack1; private Stack<T> stack2; public CQueue(){ this.stack1 = new Stack<T>(); this.stack2 = new Stack<T>(); } public void appendTail(T element){ stack1.push(element); } public T deleteTail() throws Exception{ if(stack2.size() <= 0){ //如果stack2为空,将stack1中的全部弹出,放入stack2中 while(stack1.size() > 0){ T data = stack1.pop(); stack2.push(data); } } if(stack2.size() == 0){ throw new Exception("Queue is Empty"); } T head = stack2.pop(); return head; } public boolean isEmpty(){ if(stack1.size() == 0 && stack2.size() == 0){ return true; } return false; } public static void main(String[] args) { CQueue<Integer> queue = new CQueue<Integer>(); for(int i = 0; i < 10; i++){ queue.appendTail(i); } try { while(!queue.isEmpty()) System.out.println(queue.deleteTail()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
0 0
- 剑指offer-->面试题7 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指Offer:面试题7 用两个栈实现队列
- 《剑指Offer》面试题7:用两个栈实现队列
- 【剑指offer】 面试题7: 用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指offer-面试题7:用两个栈实现队列
- 剑指offer---面试题7 用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- 剑指Offer面试题7用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指offer面试题7:用两个栈实现队列
- 剑指offer--面试题7: 用两个栈实现队列
- 剑指offer-面试题7-用两个栈实现队列
- 【剑指offer】面试题7:用两个栈实现队列
- 剑指offer 面试题7 用两个栈实现队列
- 剑指offer面试题[7]-用两个栈实现队列
- 剑指Offer面试题7[用两个栈实现队列]
- java并发编程实战手册第三章同步辅助类Phaser
- Mysql常识
- Android java代码优化问题探究
- [dp] poj 3661 Running
- Mac下常用命令收集箱
- 剑指offer--面试题7:用两个栈实现队列--Java实现
- J2EE开发常用开源框架技术
- Same Tree
- Cache Memory
- 【Ratchet】卡片式布局
- dao、pojo、javabean
- 充斥着忙碌气息的2015春天,虽苦却乐
- reshape2介绍
- iOS 初学详细之 UITableView