【ソードオファー】082スタックでキューを実現

1.問題の説明

1.2つのスタックを持つキューを実装します。キューの宣言は次のとおりです。キューの最後に整数を挿入し、キューの先頭に整数を削除する機能をそれぞれ完了する2つの関数appendTailとdeleteHeadを実装してください。(キューに要素がない場合、deleteHead操作は-1を返します)

二、解決策

1.スタックはスタックを格納するために使用されます

2.スタックはスタックから保存するために使用されます

3、具体操作

A:構築メソッド
stackInとstackOutを空に初期化します

B:要素を挿入

要素を挿入する対応するメソッドappendTailstackIn
直接要素を挿入する

C:要素を削除します

メソッドdeleteHeadに対応する要素を削除します

stackOutが空の場合は、stackIn内のすべての要素をポップして、stackOutに挿入します
。stackOutがまだ空の場合は、-1を返します。それ以外の場合は、stackOutから要素をポップアウトして、

三、コード

package com.haoxiansheng.demo01.SwordfingerOffer;

import lombok.extern.slf4j.Slf4j;
import java.util.Stack;

/**
 * @author flame
 * @data 2020/10/21
 */
@Slf4j
public class CQueue {
    
    
    private Stack<Integer> stackIn;
    private Stack<Integer> stackOut;

    public CQueue() {
    
    
        stackIn = new Stack<>();
        stackOut = new Stack<>();
    }

    public static void main(String[] args) {
    
    
        CQueue queue = new CQueue();
        queue.appendTail(8);
        queue.appendTail(9);
        queue.appendTail(10);
        log.info("pop=>{}", queue.deleteHead());
        log.info("pop=>{}", queue.deleteHead());
        log.info("pop=>{}", queue.deleteHead());
        log.info("pop=>{}", queue.deleteHead());
    }

    /**
     * 入队
     * @param value
     */
    public void appendTail(int value) {
    
    
        stackIn.push(value);
    }

    /**
     * 出队
     * @return
     */
    public int deleteHead() {
    
    
        if (!stackOut.isEmpty()) {
    
    
            return stackOut.pop();
        } else {
    
    
            while (!stackIn.isEmpty()) {
    
    
                stackOut.push(stackIn.pop());
            }
        }
        return stackOut.isEmpty() ? -1 : stackOut.pop();
    }
}

おすすめ

転載: blog.csdn.net/qq_40996741/article/details/109212296