解析如何用兩個棧來實現(xiàn)隊列的方法
更新時間:2013年06月04日 17:37:51 作者:
本篇文章是對如何用兩個棧實現(xiàn)隊列的方法進行了詳細的分析介紹,需要的朋友參考下
題目:如何用兩個棧來實現(xiàn)隊列,即實現(xiàn)隊列的兩個方法——appendTail(插入)和deleteHead(刪除)。
分析:核心思想是一個棧正向存儲,另外一個棧逆向存儲。正向存儲的棧用來插入,逆向存儲的棧用來刪除。
實現(xiàn)的Java代碼如下:
復(fù)制代碼 代碼如下:
import java.util.Stack;
public class QueneWithTwoStacks<E> {
private Stack<E> stack1;
private Stack<E> stack2;
public void appendTail(E e) {
stack1.push(e);
}
public E deleteHead() throws Exception {
if (stack2.size() <= 0) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
if (stack2.size() == 0) {
throw new Exception("Queue is empty!");
}
return stack2.pop();
}
}
相關(guān)文章
SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù)
我們經(jīng)常會遇到需要傳遞對象的場景,有時候,我們需要將一個對象的數(shù)據(jù)傳遞給另一個對象進行處理,但是又不希望直接暴露對象的內(nèi)部結(jié)構(gòu)和實現(xiàn)細節(jié),所以本文給大家介紹了SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù),需要的朋友可以參考下2024-03-03
springboot項目讀取resources目錄下的文件的9種方式
本文主要介紹了springboot項目讀取resources目錄下的文件的9種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Java中一維二維數(shù)組的靜態(tài)和動態(tài)初始化
今天通過本文給大家分享Java中的數(shù)組,包括一維數(shù)組和二維數(shù)組的靜態(tài)初始化和動態(tài)初始化問題,感興趣的朋友一起看看吧2017-10-10
關(guān)于Java大整數(shù)運算之BigInteger類
這篇文章主要介紹了關(guān)于Java大整數(shù)運算之BigInteger類,BigInteger提供高精度整型數(shù)據(jù)類型及相關(guān)操作,所有操作中,都以二進制補碼形式表示,需要的朋友可以參考下2023-05-05
springboot實現(xiàn)攔截器的3種方式及異步執(zhí)行的思考
實際項目中,我們經(jīng)常需要輸出請求參數(shù),響應(yīng)結(jié)果,方法耗時,統(tǒng)一的權(quán)限校驗等。本文首先為大家介紹 HTTP 請求中三種常見的攔截實現(xiàn),并且比較一下其中的差異。感興趣的可以了解一下2021-07-07

