stack2개로-queue만들기
각각 enqueue, dequeue용으로 스택을 이용한다.
class Queue {
public:
    stack<int> enQBox;
    stack<int> deQBox;
    void enqueue(int value) {
        enQBox.push(value);
    }
    int dequeue() {
        while(!enQBox.empty()) {
            int value = enQBox.top();
            deQBox.push(value);
            enQBox.pop();
        }
        int valueDequeued = deQBox.top();
        deQBox.pop();
        return valueDequeued;
    }
};
int main(int argc, const char * argv[]) {
    Queue* q1 = new Queue();
    q1->enqueue(1);
    q1->enqueue(2);
    q1->enqueue(3);
    printf("%d\n", q1->dequeue());
    printf("%d\n", q1->dequeue());
    printf("%d\n", q1->dequeue());
    return 0;
}Last updated
Was this helpful?