java 队列和栈相互实现
2024-09-01 08:03:23
一、队列实现栈
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();
}
} }
结果自行运行测试
最新文章
- JavaWeb基础学习体系与学习思路
- 取两个String数组的交集
- java性能调优及问题追踪--Btrace的使用
- iOS多线程开发
- Android 优化布局层次结构
- ArcGIS实现在线与线交叉处打断线(批量)
- for 与 foreach 性能
- Unity3D脚本中文系列教程(八)
- CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin详细过程
- DB2日期和时间函数汇总
- [置顶] android 图片库的封装
- 关于Spring的BeanPostProcessor
- k8s对接ceph存储
- Pwnium CTF2014 – MatterOfCombination writeup
- JVM java垃圾回收机制
- [转] [Elasticsearch] 数据建模 - 处理关联关系(1)
- vim配置函数跳转(c/c++)
- gitlab操作
- Git学习 之 安装
- bzoj 3779 重组病毒——LCT维护子树信息
热门文章
- spring-cloud-kubernetes官方demo运行实战
- 关于Socket、TCP/IP、HTTP、FTP及网络编程
- 【CF1137C】 Museums Tour 拆点+缩点
- HDU-1532 网络流裸题
- PAT L3-015. 球队“食物链”
- react-router url参数更新 但是页面不更新的解决办法
- Spring@Autowired java.lang.NullPointerException 空指针
- Visual Studio 调试 —— 附加到进程(远程服务器)
- Python作业本——前言
- html的表格边框为什么会这么粗?