一、队列实现栈

public class queue2stack {

    public static void main(String[] args) {
QS qs = new QS();
qs.push("1");
qs.push("2");
qs.push("3");
System.out.println(qs.pop());
System.out.println(qs.pop());
System.out.println(qs.peek()); QS qs2 = new QS();
qs2.push("1");
qs2.push("2");
qs2.push("3");
System.out.println(qs2.pop());
System.out.println(qs2.pop());
System.out.println(qs2.peek()); } static class QS{ private Queue queueMain = new ArrayDeque();
private Queue queueWork = new ArrayDeque(); public boolean push(Object object){
try {
queueMain.offer(object);
return true;
} catch (Exception e) {
return false;
}
} public int size() {
return queueMain.size();
} public Object pop(){
if(queueMain.isEmpty()) {
return null;
}
Queue temp = new ArrayDeque();
int size = queueMain.size();
for (int i = 0; i < size - 1; i ++) {
temp.offer(queueMain.poll());
}
Object o = queueMain.poll();
int size1 = temp.size();
for (int i = 0; i < size1; i ++) {
queueMain.offer(temp.poll());
}
return o;
} public Object peek(){
if(queueMain.isEmpty()) {
return null;
}
Queue temp = new ArrayDeque();
int size = queueMain.size(); for (int i = 0; i < size - 1; i ++) {
temp.offer(queueMain.poll());
}
Object o = queueMain.peek();
temp.offer(queueMain.poll());
int size1 = temp.size();
for (int i = 0; i < size1; i ++) {
queueMain.offer(temp.poll());
}
return o;
} public boolean empty(){
return queueMain.isEmpty();
} /**********优化***********/
public boolean push2(Object object){
try {
if (queueMain.isEmpty() && queueWork.isEmpty()) {
queueMain.offer(object);
} if (queueMain.isEmpty()) {
queueWork.offer(object);
} if(queueWork.isEmpty()) {
queueMain.offer(object);
} return true;
} catch (Exception e) {
return false;
}
} public Object pop2(){
if(queueMain.isEmpty() && queueWork.isEmpty()) {
return null;
} if (queueMain.isEmpty()) {
while (queueWork.size() > 1) {
queueMain.offer(queueWork.poll());
}
return queueWork.poll();
} if (queueWork.isEmpty()) {
while (queueMain.size() > 1) {
queueWork.offer(queueMain.poll());
}
return queueMain.poll();
} return null;
} public Object peek2(){
if(queueMain.isEmpty() && queueWork.isEmpty()) {
return null;
} if (queueMain.isEmpty()) {
while(queueWork.size() > 1) {
queueMain.offer(queueWork.poll());
}
Object e = queueWork.peek();
queueMain.offer(queueWork.poll());
return e;
} if (queueWork.isEmpty()) {
while(queueMain.size() > 1) {
queueWork.offer(queueMain.poll());
}
Object e = queueMain.peek();
queueWork.offer(queueMain.poll());
return e;
}
return null;
}
} }

二、栈实现队列

public class Stack2queue {

    public static void main(String[] args) {

        SQ sq = new SQ();
sq.offer("a");
sq.offer("b");
sq.offer("c");
System.out.println(sq.poll());
System.out.println(sq.poll());
sq.offer("d");
sq.offer("e");
System.out.println(sq.poll());
System.out.println(sq.peek());
System.out.println(sq.poll());
System.out.println(sq.poll()); } static class SQ{ private Stack stackMain = new Stack();
private Stack stackWork = new Stack(); public boolean offer(Object ele) {
stackMain.push(ele);
return true;
} public Object poll() {
if (stackWork.empty()) {
while(stackMain.size() > 0) {
stackWork.push(stackMain.pop());
}
} if (stackWork.empty()) {
return null;
}
return stackWork.pop();
} public Object peek() {
if (stackWork.empty()) {
while(stackMain.size() > 0) {
stackWork.push(stackMain.pop());
}
} if (stackWork.empty()) {
return null;
}
return stackWork.peek();
}
} }

结果自行运行测试

最新文章

  1. JavaWeb基础学习体系与学习思路
  2. 取两个String数组的交集
  3. java性能调优及问题追踪--Btrace的使用
  4. iOS多线程开发
  5. Android 优化布局层次结构
  6. ArcGIS实现在线与线交叉处打断线(批量)
  7. for 与 foreach 性能
  8. Unity3D脚本中文系列教程(八)
  9. CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin详细过程
  10. DB2日期和时间函数汇总
  11. [置顶] android 图片库的封装
  12. 关于Spring的BeanPostProcessor
  13. k8s对接ceph存储
  14. Pwnium CTF2014 – MatterOfCombination writeup
  15. JVM java垃圾回收机制
  16. [转] [Elasticsearch] 数据建模 - 处理关联关系(1)
  17. vim配置函数跳转(c/c++)
  18. gitlab操作
  19. Git学习 之 安装
  20. bzoj 3779 重组病毒——LCT维护子树信息

热门文章

  1. spring-cloud-kubernetes官方demo运行实战
  2. 关于Socket、TCP/IP、HTTP、FTP及网络编程
  3. 【CF1137C】 Museums Tour 拆点+缩点
  4. HDU-1532 网络流裸题
  5. PAT L3-015. 球队“食物链”
  6. react-router url参数更新 但是页面不更新的解决办法
  7. Spring@Autowired java.lang.NullPointerException 空指针
  8. Visual Studio 调试 —— 附加到进程(远程服务器)
  9. Python作业本——前言
  10. html的表格边框为什么会这么粗?