문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다.
1. 문제
5. BaseArray를 상속받아 큐처럼 작동하는 MyQueue 클래스를 작성하라. MyQueue를 활용하는 사례는 다음과 같다.
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 MyQueue : public BaseArray {
int enindex;
int deindex;
public :
MyQueue(int size) : BaseArray(size){ enindex=0; deindex=-1; }
void enqueue(int n){ put( enindex, n);
enindex++; }
int capacity() { return getCapacity(); }
int length() { return enindex; }
int dequeue() { enindex--;
deindex++; return get(deindex); }
};
int main() {
MyQueue mQ(100);
int n;
cout << "큐에 삽입할 5개의 정수를 입력하라>> ";
for(int i=0; i<5; i++) {
cin >> n;
mQ.enqueue(n);
}
cout << "큐의 용량:" << mQ.capacity() << ", 큐의 크기:" << mQ.length() << endl;
cout << "큐의 원소를 순서대로 제거하여 출력한다>> ";
while(mQ.length() != 0 ) {
cout << mQ.dequeue() << ' ';
}
cout << endl << "큐의 현재 크기 : " << mQ.length() << endl;
}
4. 설명
큐는 선입선출의 구조로서 가장 먼저 들어간 데이터가 가장 먼저 나오는 구조 입니다.
BaseArray 클래스의 생성자는 입력받는 매개변수 값만큼 동적으로 배열을 생성합니다.
MyQueue 클래스의 생성자에서는 : BaseArray( size )를 해 주어서 BaseArray의 매개변수 있는 생성자가 실행되도록 합니다.
MyQueue 클래스는 2개의 멤버 변수를 가지는데 하나는 삽입할 위치에 인덱스 번호를, 또 다른 하나는 삭제할 요소의 인덱스 번호를 저장합니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 8장 7번 (0) | 2019.04.28 |
---|---|
명품 C++ programming 실습문제 8장 6번 (0) | 2019.04.28 |
명품 C++ programming 실습문제 8장 4번 (1) | 2019.04.22 |
명품 C++ programming 실습문제 8장 3번 (0) | 2019.04.22 |
명품 C++ programming 실습문제 8장 2번 (0) | 2019.04.22 |