8.6> BaseArray 클래스를 상속받아 스택으로 작동하는 MyStack 클래스를 작성하라.
<코드>
#include <iostream>
using namespace std;
class BaseArray{ private: int capacity;//배열의 크기 int *mem;//정수 배열을 만들기 위한 메모리의 포인터 protected: BaseArray(int capacity=100){ //디폴트 매개변수 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{ private: int rear; //마지막 인덱스 리어 public: MyStack(int capacity,int rear); void push(int arg); //마지막에 원소 추가 int capacity(); //스택 용량 int length(); //스택 길이 int pop(); //마지막 원소 꺼내옴 }; MyStack::MyStack(int capacity=100,int rear=-1):BaseArray(capacity) {this->rear=rear;} void MyStack::push(int arg) {rear++; put(rear,arg);} int MyStack::capacity() {int cap=getCapacity(); return cap;} int MyStack::length(){return rear+1;} int MyStack::pop(){int out=get(rear); rear--; return out;}
int main(void){ 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; return 0; }
|
<결과창>
|
'컴퓨터 & 프로그래밍 & 전자공학 > C++' 카테고리의 다른 글
Printer Class (0) | 2017.12.31 |
---|---|
ROM RAM class (0) | 2017.12.31 |
MyQueue Class (0) | 2017.12.31 |
Stack class (0) | 2017.12.25 |
Statistics class (0) | 2017.12.25 |