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

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM