利用栈Stack实现队列(Queue)
2015-07-15 15:04
204 查看
实现说明:
入队时,将元素压入s1;
出队时,判断s2是否为空,如不为空,则直接弹出顶元素;如为空,则将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队;
这个思路,避免了反复“倒”栈,仅在需要时才“倒”一次。
入队时,将元素压入s1;
出队时,判断s2是否为空,如不为空,则直接弹出顶元素;如为空,则将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队;
这个思路,避免了反复“倒”栈,仅在需要时才“倒”一次。
package com.knowledgeStudy.threadLocal; import java.util.Stack; public class MyQueue { Stack<Object> s1 = new Stack<Object>();//入栈 Stack<Object> s2 = new Stack<Object>();//出栈 // Push element x to the back of queue. public void push(Object x) { s1.push(x); } // Removes the element from in front of queue. public void pop() { if (!s2.isEmpty()) { s2.pop(); } else { while (!s1.isEmpty()) { s2.push(s1.pop()); } s2.pop(); } } // Get the front element. public Object peek() { if (!s2.isEmpty()) { return s2.peek(); } else { while (!s1.isEmpty()) { s2.push(s1.pop()); } return s2.peek(); } } // Return whether the queue is empty. public boolean empty() { return s1.empty() && s2.empty(); } //测试 public static void main(String[] args) { MyQueue queue = new MyQueue(); queue.push(1); queue.pop(); System.out.println(queue.empty()); } }
相关文章推荐
- bluethooth BLE Android
- 安卓uiautomator使用步骤
- Android音乐播放器 -- UI 代码构现
- sourceinsight 添加quicker.em生效
- Django: CSRF verification failed. Request aborted.
- UITableView beginUpdate和endUpdate使用的前提
- cxgrid footer summary value by a column
- leetCode 63.Unique Paths II (唯一路径II) 解题思路和方法
- leetCode 62.Unique Paths (唯一路径) 解题思路和方法
- UITextView 响应 键盘的return(完成键)
- leetCode 60.Permutation Sequence (排列序列) 解题思路和方法
- 使用uiautomator获取应用内存
- 【原】设置iOS项目BuildVersion自动增加
- UIimageview tap 跳转
- iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
- 如何编译WinCE Bluetooth Stack并打开的默认LOG
- Forbidden (403) CSRF verification failed. Request aborted.
- UEFI HOB
- UEFI Drivers & UEFI Driver Model
- UEFI Images