劍指offer編程題Java實現——面試題7用兩個棧實現隊列。本站提示廣大學習愛好者:(劍指offer編程題Java實現——面試題7用兩個棧實現隊列)文章只能為提供參考,不一定能成為您想要的結果。以下是劍指offer編程題Java實現——面試題7用兩個棧實現隊列正文
題目:
用兩個棧實現一個隊列。隊列的聲明如下:請實現他的兩個函數appendTail和deleteHead, 分別完成在隊列尾部插入節點和在隊列頭部刪除節點的功能。
package Solution; import java.util.Stack; /** * 劍指offer面試題7:用兩個棧實現隊列 * 題目:用兩個棧實現一個隊列。隊列的聲明如下:請實現他的兩個函數appendTail和deleteHead, * 分別完成在隊列尾部插入節點和在隊列頭部刪除節點的功能。 * @author GL * */ public class No7QueueWithTwoStacks { private static Stack<Object> stack1=new Stack<Object>(); private static Stack<Object> stack2=new Stack<Object>(); /* * 加入隊列中的元素只加入到棧1中 */ public static void appendTail(Object item){ stack1.push(item); System.out.println("壓入棧元素:"+item); } /* * 刪除一個元素時,檢查棧2是否為空,棧2不為空則彈出棧2棧頂元素 * 棧2為空,則把棧1中的元素全部彈出、壓入到棧2中,然後從棧2棧頂彈出元素 */ public static void deleteHead(){ if(!stack2.empty()) System.out.println("彈出棧元素:"+stack2.pop()); else{ if(stack1.empty()) throw new RuntimeException("隊列為空"); while(!stack1.empty()){ Object item=stack1.pop(); stack2.push(item); } deleteHead(); } } public static void main(String[] args) { //向空的隊列中添加元素 appendTail(1); //向非空的隊列中添加元素 appendTail(2); appendTail(3); //向非空的隊列中刪除元素 deleteHead(); deleteHead(); appendTail(4); deleteHead(); appendTail(5); deleteHead(); deleteHead(); deleteHead(); } }