Computer Science/Data Structure, Algorithm

Data Structure] 스택 클래스를 일반화한 제네릭 클래스

TwinParadox 2017. 6. 6. 00:00
728x90




템플릿 이용해서 스택을 일반화해봤다.

클래스 활용도 연습을 해볼 겸, 템플릿 사용도 연습을 해볼 겸...

다른 기능 없이 아주 일반적인 push, pop, 생성자만 구현했다.

다음엔 리스트도 해볼 생각.


 



#include <iostream>
using namespace std;
 
template <class T>
class Stack
{
    int tos;
    T data[100];
public:
    Stack();
    void push(T element);
    T pop();
};
 
template <class T>
Stack<T>::Stack()
{
    tos = -1;
}
 
template <class T>
void Stack<T>::push(T element)
{
    if (tos == 99)
    {
        cout << "stack full";
        return;
    }
    tos++;
    data[tos] = element;
}
 
template <class T>
T Stack<T>::pop()
{
    T retData;
    if (tos == -1)
    {
        cout << "stack empty";
        return 0;
    }
    retData = data[tos--];
    return retData;
}
 
int main()
{
    Stack<int> iStack;
    iStack.push(3);
    cout << iStack.pop() << endl;
 
    Stack<double> dStack;
    dStack.push(3.5);
    cout << dStack.pop() << endl;
 
    Stack<char> *p = new Stack<char>();
    p->push('a');
    cout << p->pop() << endl;
    delete p;
}


728x90