1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

#include <iostream>

using namespace std;

 

class AbstractStack {

public:

    virtual bool push(int n) = 0;

    virtual bool pop(int &n) = 0;

 

    virtual int size() = 0;

};

 

class IntStack : public AbstractStack {

    int *stack;    // 배열 포인터 변수 생성

    int stack_size;

    int top = -1; // 스텍 위치

public:

    IntStack(int size) {    // IntStack 생성자로 n 만큼 동적할당

        stack_size = size;

        stack = new int[size];

    }

    int size() {        // 스텍의 정수 갯수

        return top+2;

    }

    bool push(int n){

        top++;

        stack[top] = n;

        if (top + 1 == stack_size) return false;

        else return true;

    }

    bool pop(int &n) {

        n = stack[top];

        top--;

        if (top + 1 == stack_size) return false;

        else return true;

    }

};

int main() {

    int pop_value;

    IntStack stack(3);                    // stack 크기 3

    cout << stack.push(3)<<endl;        // stack 에 3 삽입 top = 0

    cout << stack.push(5) << endl;        // stack 에 5 삽입 top = 1

    cout << stack.push(4) << endl;        // stack 에 4 삽입 top = 2

    

    cout << stack.pop(pop_value)<<endl;        // 첫번째 pop  4 나옴

    cout << pop_value << endl;

    cout << stack.pop(pop_value) << endl;        // 첫번째 pop     5 나옴

    cout << pop_value << endl;

    cout << stack.pop(pop_value) << endl;        // 첫번째 pop    3 나옴

    cout << pop_value << endl;

}

Colored by Color Scripter

cs

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

명품 c++ 9장 실습문제 7번  (0) 2019.06.14
명품 c++ 9장 실습문제 7번  (0) 2019.06.14
명품 c++ 9장 실습문제 5번  (0) 2019.06.14
명품 c++ 9장 실습문제 3,4 번  (0) 2019.06.14
명품 c++ 9장 실습문제 1,2 번  (0) 2019.06.14

+ Recent posts