반응형
#include<iostream> using namespace std; class Stack { public: int m_size; int m_top; int *m_buffer; void Initialize(int size = 10); void RemoveAll(); bool Push(int value); bool Pop(int& value); }; void Stack::Initialize(int size) {//스택 생성 m_size = size; m_top = -1; m_buffer = new int[m_size]; memset(m_buffer, 0, sizeof(int)*m_size); } void Stack::RemoveAll() {//스택 초기화, 삭제 m_size = 0; m_top = -1; delete[] m_buffer; m_buffer = NULL; } bool Stack::Push(int value) { if (m_top >= m_size - 1) return false;//오버플로우 발생시 거짓 리턴 m_buffer[++m_top] = value; return true; } bool Stack::Pop(int& value) { if (m_top < 0) return false;//언더플로우 발생시 거짓 리턴 value = m_buffer[m_top--]; return true; } int main() { Stack s1, s2; s1.Initialize(5); s2.Initialize(); while (s1.Push(rand() % 100)); cout << "s1에 저장된 데이터: "; for(int i = 0; i < s1.m_size; i++) cout << s1.m_buffer[i] << " "; cout << "\n"; cout << "s1에서 꺼낸 데이터: "; int data; while (s1.Pop(data)) cout << data << " "; cout << "\n"; while (s2.Push(rand() % 100)); cout << "s2에 저장된 데이터: "; for (int i = 0; i < s2.m_size; i++) cout << s2.m_buffer[i] << " "; cout << "\n"; cout << "s2에서 꺼낸 데이터"; while (s2.Pop(data)) cout << data << " "; cout << "\n"; s1.RemoveAll(); s2.RemoveAll(); return 0; }
<결과>
2016/11/27 - [C++] - C++ 소스코드: 전역, 지역, 동적으로 할당된 객체
2016/11/26 - [C++] - C++ 소스코드: 네임스페이스 정의 예제
2016/11/26 - [C++] - C++ 소스코드: 여러개의 파라미터를 갖는 함수 템플릿 예제
#C++ #C++ 소스코드 #스택 구현 예제 #실습 예제
반응형
'C++' 카테고리의 다른 글
C++ 소스코드: 접근자 함수를 이용한 스택 구현 예제 (0) | 2016.11.27 |
---|---|
C++ 소스코드: 스택 분할 구현 예제(헤더, 소스, 메인 파일) (0) | 2016.11.27 |
C++ 소스코드: 전역, 지역, 동적으로 할당된 객체 (0) | 2016.11.27 |
C++ 소스코드: 네임스페이스 정의 예제 (0) | 2016.11.26 |
C++ 소스코드: 여러개의 파라미터를 갖는 함수 템플릿 예제 (0) | 2016.11.26 |