문제 :
스택 클래스 Stack을 만들고 푸시(push)용으로 << 연산자를, 팝(pop)을 위해 >> 연산자를, 비어 있는 스택인지를 알기 위해 ! 연산자를 작성하라.
다음 코드를 main()으로 작성하라.
1
2
3
4
5
6
7
8
9
|
Stack stack;
stack << 3 << 5 << 10; // 3,5,10 순서대로 push
while(true){
if(!stack) break; //stack empty
int x;
stack >> x; //stack의 top에 있는 정수 pop
cout << x << ' ';
}
cout << endl;
|
실행 결과 :
목적 및 힌트 :
참조 리턴 등 참조자(&) 사용이 필요한 연산자 종합 응용
코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include<iostream>
using namespace std;
class Stack{
int stack[10];
int top;
public:
Stack(){ top=0; }
Stack& operator<< (int num){
stack[top] = num;
top++;
return *this;
}
bool operator! (){
if(top)
return false;
return true; //top이 empty면 true 반환
}
Stack operator>> (int& x){
x = stack[top-1];
top--;
return *this;
}
};
int main() {
Stack stack;
stack << 3 << 5 << 10; // 3,5,10 순서대로 push
while(true){
if(!stack) break; //stack empty
int x;
stack >> x; //stack의 top에 있는 정수 pop
cout << x << ' ';
}
cout << endl;
}
|
'C++ programming' 카테고리의 다른 글
명품 C++ programming 실습 문제 8장 1번 (1) | 2020.03.09 |
---|---|
명품 C++ programming 실습 문제 7장 12번 (3) | 2020.03.06 |
명품 C++ programming 실습 문제 7장 10번 (3) | 2020.03.06 |
명품 C++ programming 실습 문제 7장 9번 (1) | 2020.03.06 |
명품 C++ programming 실습 문제 7장 8번 (1) | 2020.03.06 |