相關題目: 用兩個隊列實現一個棧
思路分析: 整體的思想跟用兩個棧實現一個隊列,大同小異
直接源碼:
/**
* 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();
}
}
}