解析如何用兩個(gè)棧來實(shí)現(xiàn)隊(duì)列的方法
題目:如何用兩個(gè)棧來實(shí)現(xiàn)隊(duì)列,即實(shí)現(xiàn)隊(duì)列的兩個(gè)方法——appendTail(插入)和deleteHead(刪除)。
分析:核心思想是一個(gè)棧正向存儲(chǔ),另外一個(gè)棧逆向存儲(chǔ)。正向存儲(chǔ)的棧用來插入,逆向存儲(chǔ)的棧用來刪除。
實(shí)現(xiàn)的Java代碼如下:
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)文章
WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程
這篇文章主要介紹了WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09java遠(yuǎn)程連接調(diào)用Rabbitmq的實(shí)例代碼
本篇文章主要介紹了java遠(yuǎn)程連接調(diào)用Rabbitmq的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07Spring Boot集群管理工具KafkaAdminClient使用方法解析
這篇文章主要介紹了Spring Boot集群管理工具KafkaAdminClient使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Java任務(wù)調(diào)度的常見實(shí)現(xiàn)方法與比較詳解
這篇文章主要介紹了Java任務(wù)調(diào)度的常見實(shí)現(xiàn)方法與比較,結(jié)合實(shí)例形式分析了Java任務(wù)調(diào)度的四種常見實(shí)現(xiàn)方法,使用區(qū)別及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法
這篇文章主要介紹了詳解Java獲取環(huán)境變量及系統(tǒng)屬性的方法,講解了System.getEnv()和System.getProperties()這兩個(gè)核心方法的使用,需要的朋友可以參考下2016-05-05Spring的異常處理@ExceptionHandler注解解析
這篇文章主要介紹了Spring的異常處理@ExceptionHandler注解解析,當(dāng)一個(gè)Controller中有方法加了@ExceptionHandler之后,這個(gè)Controller其他方法中沒有捕獲的異常就會(huì)以參數(shù)的形式傳入加了@ExceptionHandler注解的那個(gè)方法中,需要的朋友可以參考下2023-12-12