91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么用兩個棧實現隊列和用兩個隊列實現一個棧

發布時間:2021-12-20 13:43:04 來源:億速云 閱讀:114 作者:iii 欄目:云計算

這篇文章主要講解了“Java怎么用兩個棧實現隊列和用兩個隊列實現一個棧”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java怎么用兩個棧實現隊列和用兩個隊列實現一個棧”吧!

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;  
  
    /* 
     * Q 57 用兩個棧實現隊列 
     */

public class QueueImplementByTwoStacks {

    private Stack<Integer> stack1;
    private Stack<Integer> stack2;

    QueueImplementByTwoStacks(){
        stack1=new Stack<Integer>();
        stack2=new Stack<Integer>();
    }

    public Integer poll(){
        Integer re=null;
        if(!stack2.empty()){//如果stack2不為空則彈出棧頂元素
            re=stack2.pop();
        }else{//如果stack2為空,將stack1中的元素彈出,依次壓棧到stack2中,那么stack1棧底的元素就會成為stack2棧頂的元素,從而達到stack1先進先出的隊列順序
            while(!stack1.empty()){
                re=stack1.pop();
                stack2.push(re);
            }
            if(!stack2.empty()){
                re=stack2.pop();
            }
        }
        return re;
    }
    public Integer offer(int o){//每次只從stack1壓棧
        stack1.push(o);
        return o;
    }

    public static void main(String[] args) {
        QueueImplementByTwoStacks queue=new QueueImplementByTwoStacks();
        List<Integer> re=new ArrayList<Integer>();
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        re.add(queue.poll());
        queue.offer(4);
        re.add(queue.poll());
        queue.offer(5);
        re.add(queue.poll());
        re.add(queue.poll());
        re.add(queue.poll());
        System.out.println(re.toString());
    }

}
import java.util.LinkedList;

/* 
 * Q 57 用兩個隊列實現一個棧 
 */
public class StackImplementByTwoQueues {

    //use 'queue1' and 'queue2' as a queue.That means only use the method 'addLast' and 'removeFirst'.  
    private LinkedList<Integer> queue1;
    private LinkedList<Integer> queue2;

    StackImplementByTwoQueues(){
        queue1=new LinkedList<Integer>();
        queue2=new LinkedList<Integer>();
    }

    public Integer pop(){//隊列1不為空,隊列2為空,將隊列順序讀到隊列2中,則最后一個元素就是需要彈出的值
        Integer re=null;
        if(queue1.size()==0&&queue2.size()==0){
            return null;
        }
        if(queue2.size()==0){
            while(queue1.size()>0){
                re=queue1.removeFirst();//等同re=queue1.remove();
                if(queue1.size()!=0){//do not add the last element of queue1 to queue2  
                    queue2.addLast(re);
                }
            }
        }else if (queue1.size()==0){
            while(queue2.size()>0){
                re=queue2.removeFirst();
                if(queue2.size()!=0){//do not add the last element of queue2 to queue1  
                    queue1.addLast(re);
                }
            }
        }
        return re;
    }
    public Integer push(Integer o){
        if(queue1.size()==0&&queue2.size()==0){
            queue1.addLast(o);//queue2.addLast(o); is also ok  
        }
        if(queue1.size()!=0){
            queue1.addLast(o);//等同queue1.=add(0)
        }else if(queue2.size()!=0){
            queue2.addLast(o);
        }
        return o;
    }

    public static void main(String[] args) {
        StackImplementByTwoQueues stack=new StackImplementByTwoQueues();
        int tmp=0;
        stack.push(1);
        stack.push(2);
        stack.push(3);
        tmp=stack.pop();
        System.out.println(tmp);//3  
        stack.push(4);
        tmp=stack.pop();
        System.out.println(tmp);//4  
        tmp=stack.pop();
        System.out.println(tmp);//2  
        stack.push(5);
        stack.push(6);
        tmp=stack.pop();
        System.out.println(tmp);//6  
        tmp=stack.pop();
        System.out.println(tmp);//5  
        tmp=stack.pop();
        System.out.println(tmp);//1  
    }
}

感謝各位的閱讀,以上就是“Java怎么用兩個棧實現隊列和用兩個隊列實現一個棧”的內容了,經過本文的學習后,相信大家對Java怎么用兩個棧實現隊列和用兩個隊列實現一個棧這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹东市| 苗栗县| 泾川县| 梁山县| 唐河县| 九台市| 吐鲁番市| 泉州市| 汝城县| 南江县| 安徽省| 吉安县| 和平县| 石渠县| 手机| 绥宁县| 泾阳县| 扶风县| 齐河县| 青州市| 开化县| 申扎县| 五莲县| 棋牌| 凤山市| 湘潭市| 宜黄县| 庆元县| 如皋市| 财经| 葵青区| 沛县| 藁城市| 长子县| 玉山县| 江西省| 咸丰县| 邵阳县| 贡嘎县| 师宗县| 呼伦贝尔市|