컴퓨터/C++
[C++][자료구조] Template 를 이용한 Stack Source Code
by Luyin
2013. 1. 4.
열혈강의 C++ P.464
class, Template를 이용한 Stack
#include <iostream>
using std::cout;
using std::endl;
template <typename T>
class Stack{
private:
int topIdx; // 마지막 입력된 위치의 인덱스
T * stackPtr; // 스택 포인터
public :
Stack(int s=10);
~Stack();
void Push(const T& pushValue);
T Pop();
};
template <typename T>
Stack<T>::Stack(int len){
topIdx=-1 //스택 인덱스 초기화
stackPtr=new T[len]; //데이터 저장 위한 배열 선언
}
template <typename T>
Stack<T>::~Stack()
{
delete[] stackPtr;
}
template <typename T>
void Stack<T>::Push(const T& pushValue)
{
stackPtr[++topIdx] = pushValue;
}
template <typename T>
T Stack<T>::Pop()
{
return stackPtr[topIdx--];
}
int main()
{
Stack<char> stack(10);
stack.Push('A');
stack.Push('B');
stack.Push('C');
for(int i=0;i<3; i++)
{
cout<<stack.Pop()<<endl;
}
Stack<int> stack2(10);
stack2.Push(10);
stack2.Push(20);
stack2.Push(30);
for(int j=0; j<3; j++)
{
cout<<stack2.Pop()<<endl;
}
return 0;
}
|