1. 문제
6. BaseArray 클래스를 상속받아 스택으로 작동하는 MyStack 클래스를 작성하라.
2. 결과
3. 코드
#include <iostream>
#include <string>
using namespace std;
class BaseArray {
int capacity;
int *mem;
protected :
BaseArray(int capacity=100) {
this->capacity = capacity; mem = new int [capacity];
}
~BaseArray() { delete [] mem; }
void put(int index, int val) { mem[index] = val; }
int get(int index) { return mem[index]; }
int getCapacity() { return capacity; }
};
class MyStack : public BaseArray {
int top;
public :
MyStack(int size) : BaseArray(size){ top=0; }
void push(int n){ put( top, n); top++; }
int capacity() { return getCapacity(); }
int length() { return top; }
int pop() { top--; return get(top); }
};
int main() {
MyStack mStack(100);
int n;
cout << "스택에 삽입할 5개의 정수를 입력하라>> ";
for(int i=0; i<5; i++) {
cin >> n;
mStack.push(n);
}
cout << "스택용량:" << mStack.capacity() << ", 스택크기:" << mStack.length() << endl;
cout << "스택의 모든 원소를 팝하여 출력한다>> ";
while(mStack.length() != 0 ) {
cout << mStack.pop() << ' ';
}
cout << endl << "스택의 현재 크기 : " << mStack.length() << endl;
}
4. 설명
스택은 후입선출의 구조로서 나중에 들어간 데이터가 가장 먼저 나오는 구조 입니다.
앞서 구현하였더 Queue와 달리 Stack은 가장 꼭대기를 가리키는 top 멤버 변수 하나를 이용하여서 데이터를 삽입하거나 삭제 합니다.
후입선출의 구조이므로 삽입할 시 top++;을 해주고 삭제 시 top--;를 해주면 됩니다.
※ 이미지가 잘못되었는데 귀찮아서 수정하지 않았습니다. 결과는 알맞게 나오도록 코드는 수정하였으니 문제 없습니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 8장 8번 (0) | 2019.04.28 |
---|---|
명품 C++ programming 실습문제 8장 7번 (0) | 2019.04.28 |
명품 C++ programming 실습문제 8장 5번 (0) | 2019.04.28 |
명품 C++ programming 실습문제 8장 4번 (1) | 2019.04.22 |
명품 C++ programming 실습문제 8장 3번 (0) | 2019.04.22 |