검은 제안을 의미합니다 ------------ 두 개의 스택이있는 큐 구현

여기에 사진 설명 삽입

아이디어 :이
질문은 스택의 아이디어를 사용하여 수행하는 것입니다. 하나의 스택은 숫자를 입력하는 데 사용되며 숫자를 출력하려면 다른 스택에 숫자가 있는지 확인하기 만하면됩니다. 그렇지 않은 경우 스택 1을 넣으십시오. 숫자는 스택 2에 넣고 스택 2는 대기열에있는 요소와 동일합니다.

암호:

class CQueue {
    
    
public:
    CQueue() {
    
    
    }
    
    void appendTail(int value) {
    
    
        st1.push(value);
        return ;
    }
    
    int deleteHead() {
    
    
        if(st1.size()==0 && st2.size()==0  )  return -1;

        if(st2.size()){
    
    
            int t = st2.top();
            st2.pop();
            return t;
        }else{
    
    
            while(!st1.empty()){
    
    
                st2.push(st1.top());
                st1.pop();
            }
            int t = st2.top();
            st2.pop();
            return t;
        }
        return 0;
    }

private:
    stack<int> st1,st2;
};

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

추천

출처blog.csdn.net/weixin_43743711/article/details/115051672