相关题目: 用两个队列实现一个栈
思路分析: 整体的思想跟用两个栈实现一个队列,大同小异
直接源码:
/**
* Author: Heynchy
* Date: 2019/11/21
* <p>
* Introduce: 用两个队列实现栈的操作
*/
public class StackUtil {
private static LinkedList<String> linkedList1 = new LinkedList<>();
private static LinkedList<String> linkedList2 = new LinkedList<>();
/**
* 模拟入栈操作
*
* @param str
*/
public static void push(String str) {
if ((linkedList1.size() == 0 && linkedList2.size() == 0) || linkedList1.size() > 0) {
// 如果队列1和队列2都为空,或者队列1有值,则将元素压入队列1
linkedList1.add(str);
} else {
// 否则压入队列2(队列2有值的情况)
linkedList2.add(str);
}
}
/**
* 模拟出栈操作
*
* @return
*/
public static String pop() {
if (linkedList1.size() == 0 && linkedList2.size() == 0) {
return "该栈为空栈!";
}
if (linkedList1.size() > 0){
// 如果队列1有值,则剩余1个其余弹出,并压入队列2
while (linkedList1.size()!=1) {
String str = linkedList1.pop();
linkedList2.add(str);
}
// 返回队列1的最后一个值
return linkedList1.pop();
} else {
// 如果队列2有值,则弹出全部,并压入队列1
while (linkedList2.size()!= 1) {
String str = linkedList2.pop();
linkedList1.add(str);
}
// 返回队列2的最后一个值
return linkedList2.pop();
}
}
}