ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 5장 7번
    C++ 2018. 10. 31. 19:36

    7. 다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라. MyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10이다.


    class MyIntStack {
        int p[10]; // 최대 10개의 정수 저장
        int tos; // 스택의 꼭대기를 가리키는 인덱스
    public:
        MyIntStack();
        bool push(int n); // 정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴
        bool pop(int &n); // 팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴
    };


    MyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다.


    int main() {
        MyIntStack a;
        for (int i = 0; i < 11; ++i) {
            if (a.push(i)) cout << i << ' ';
            else cout << endl << i + 1 << " 번째 stack full" << endl;
        }
        int n;
        for (int i = 0; i < 11; ++i) {
            if (a.pop(n))cout << n << ' ';
            else cout << endl << i + 1 << " 번째 stack empty";
        }
        cout << endl;
    }


    소스코드


    #include <iostream>
    using namespace std;
    class MyIntStack {
        int p[10]; // 최대 10개의 정수 저장
        int tos; // 스택의 꼭대기를 가리키는 인덱스
    public:
        MyIntStack();
        bool push(int n); // 정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴
        bool pop(int &n); // 팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴
    };
    MyIntStack::MyIntStack() {
        tos = -1;
    }
    bool MyIntStack::push(int n) {
        if (tos == 9) return false;
        else {
            ++tos;
            p[tos] = n;
            return true;
        }
        
    }
    bool MyIntStack::pop(int& n) {
        if (tos == (-1)) return false;
        else {
            n = p[tos];
            --tos;
            return true;
        }
        
    }
    int main() {
        MyIntStack a;
        for (int i = 0; i < 11; ++i) {
            if (a.push(i)) cout << i << ' ';
            else cout << endl << i + 1 << " 번째 stack full" << endl;
        }
        int n;
        for (int i = 0; i < 11; ++i) {
            if (a.pop(n))cout << n << ' ';
            else cout << endl << i + 1 << " 번째 stack empty";
        }
        cout << endl;
    }


    실행결과



    pop는 리턴타입이 bool이기 때문에 참조에 의한 호출로 n을 공유하여 pop한 값을 출력시켰습니다.

    'C++' 카테고리의 다른 글

    명품 C++ 5장 9번  (0) 2018.10.31
    명품 C++ 5장 8번  (0) 2018.10.31
    명품 C++ 5장 6번  (3) 2018.10.31
    명품 C++ 5장 5번  (0) 2018.10.31
    명품 C++ 5장 4번  (0) 2018.10.31

    댓글

© 2018 TISTORY. All rights reserved.