1. 문제
5. 다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라.
MyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10이다.
MyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다.
2. 결과
3. 코드
#include <iostream>
using namespace std;
class MyIntStack {
int p[10];
int tos;
public :
MyIntStack(){ tos = 0; }
bool push(int n);
bool pop(int &n);
};
bool MyIntStack::push(int n) {
if( tos == 10 )
return false;
else {
p[tos] = n;
tos++;
return true;
}
}
bool MyIntStack::pop(int &n) {
tos--;
if( tos == -1 )
return false;
else {
n = p[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;
}
4. 설명
Stack은 선입선출의 구조로 가장 나중에 들어온 데이터가 가장 먼저 나갑니다.
Stack을 예로 들어 설명하면 책을 쌓는 것과 유사하다고 할 수 있습니다.
책(데이터)이 쌓여서 만들어진 책 더미의서 책(데이터)을 추가할려면 가장 위(top)에다가 책을 추가합니다.
여기서 가장 위 top(높이)를 저장하고 있는 값이 멤버 변수 tos 입니다.
※ 배열의 인덱스는 0부터 시작하므로 클래스 MyIntStack의 생성자에서 tos = -1로 초기화 해줍니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 5장 7번 (0) | 2019.04.07 |
---|---|
명품 C++ programming 실습문제 5장 6번 (0) | 2019.04.07 |
명품 C++ programming 실습문제 5장 4번 (0) | 2019.04.07 |
명품 C++ programming 실습문제 5장 3번 (0) | 2019.04.07 |
명품 C++ programming 실습문제 5장 2번 (0) | 2019.04.07 |