본문 바로가기
프로그래밍

[C++] 명품 c++ 프로그래밍 실습 5장 5번 (stack)

by 엽기토기 2020. 12. 23.
반응형
#include <iostream>
using namespace std;

class MyIntStack {
	int p[10]; //최대 10개의 정수 저장
	int tos; //스택의 꼭대기를 가리키는 인덱스
public:
	MyIntStack();
	bool push(int n); //정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴
	bool pop(int &n);//팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴
};
MyIntStack::MyIntStack() {
	tos = 0;
}
bool MyIntStack::push(int n) {
	if (tos == 10)
		return false;
	else
		p[tos] = n;
		tos++;
		return true;
}
bool MyIntStack::pop(int &n) {
	if (tos == 0)
		return false;
	else
		n = p[tos-1];
		tos--;
		return true;
}
int main() {
	MyIntStack a;
	for (int i = 0; i < 11; i++) {//11개를 푸시하면,마지막에는 stack full이 된다.
		if (a.push(i)) cout << i << ' '; //푸시된 값 에코
		else cout << endl << i + 1 << " 번째 stack full" << endl;
	}
	int n;
	for (int i = 0; i < 11; i++) { //11개를 팝하면, 마지막에는 stack empty가 된다.
		if (a.pop(n)) cout << n << ' '; //팝 한 값 출력
		else cout << endl << i + 1 << " 번째 stack empty";
	}
	cout << endl;
}
반응형