程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 劍指offer編程題Java實現——面試題7用兩個棧實現隊列

劍指offer編程題Java實現——面試題7用兩個棧實現隊列

編輯:關於JAVA

劍指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();

    }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved