1. 문제
6. 다음 AbstractStack은 정수 스택 클래스로서 추상 클래스이다.
이를 상속받아 정수를 푸시, 팝하는 IntStack 클래스를 만들고 사용 사례를 보여라.
2. 결과
3. 코드
#include <iostream>
#include <string>
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 top;
int max;
public :
IntStack(int n){ stack = new int[n]; max = n; top=-1; }
bool push(int n) {
if( top == max ) return false;
else {
top++;
stack[top] = n;
return true;
}
}
bool pop(int& n) {
if( top < 0 ) return false;
else {
n = stack[top];
top--;
return true;
}
}
int size() {
return top+1;
}
};
int main() {
IntStack intstack(50);
int re;
intstack.push(10);
intstack.push(20);
intstack.push(30);
intstack.push(40);
cout << "현재 원소 개수 : " << intstack.size() << "개" << endl;
intstack.pop(re);
cout << "pop : " << re << endl;
intstack.pop(re);
cout << "pop : " << re << endl;
intstack.pop(re);
cout << "pop : " << re << endl;
cout << "현재 원소 개수 : " << intstack.size() << "개" << endl;
}
4. 설명
스택은 후입선출의 구조로서 가장 나중에 들어온 값이 가장 먼저 나가는 형태입니다.
main 함수를 보면 push로 10, 20, 30, 40을 순서대로 스택에 넣었습니다.
그 후 pop을 하면 가장 나중에 들어온 순서대로 40, 30, 20이 나간 후 현재 원소 개수를 size() 메소드로 알아보면 1개가 남은 것을 알 수 있습니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 9장 9번 (0) | 2019.05.04 |
---|---|
명품 C++ programming 실습문제 9장 7번, 8번 (0) | 2019.05.03 |
명품 C++ programming 실습문제 9장 5번 (0) | 2019.05.03 |
명품 C++ programming 실습문제 9장 3번, 4번 (0) | 2019.05.02 |
명품 C++ programming 실습문제 9장 1번, 2번 (0) | 2019.05.02 |