[STL] 템플릿을 이용해 Stack Calss 만들기.



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