[STL] 템플릿을 이용해 Stack Calss 만들기.
C∫C++ 2017. 4. 15. 14:49
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #include <iostream> using namespace std; #define MAX 9 template <class T> class Stack{ private: T Data; Stack* pUnder; Stack* pHead; public: Stack() { pHead = NULL;} ~Stack() { Clear(); delete pHead;} // 정보 저장. void push(T Data) { Stack* NewNode = new Stack; NewNode->Data = Data; NewNode->pUnder = NULL; if(pHead != NULL) NewNode->pUnder = pHead; pHead = NewNode; } // 정보 출력. T peek() { if(pHead == NULL) return -1; return pHead->Data; } // 정보 삭제. void pop() { if(pHead == NULL) return; Stack* pRemove = pHead; pHead = pHead->pUnder; delete pRemove; } // 모든 정보를 지운다. void Clear() { while(pHead != NULL) { Stack* pRemove = pHead; pHead = pHead->pUnder; delete pRemove; } pHead = NULL; } }; void main() { Stack<int> s; for(int i = 0; i < MAX; i++) s.push(i); for(int i = 0; i < MAX; i++) { printf("%d ", s.peek()); s.pop(); } } | cs |
자세한 설명은 생략한다.
결과
'C∫C++' 카테고리의 다른 글
[C++] 함수 포인터 (0) | 2017.04.14 |
---|---|
객체지향. (0) | 2017.01.15 |