메모리를 동적으로 관리하거나 STL의 실제 스택처럼은 구현 안 함!
간단하게 어떤 원리로 동작하는지만 테스트하기 위한 코드임 :3
stack은 먼저 들어온 값이 가장 마지막으로 삭제 되고 가장 마지막에 들어온 값이 먼저 삭제되는 구조임 ;)
#include <iostream>
using namespace std;
template<typename T>
class stack
{
public:
// push element
void Push(T element)
{
stackContainer[size] = element;
++size;
}
// pop top element
void Pop(void)
{
if (size > 0)
{
--size;
}
}
// return top element
T Top(void) const
{
return stackContainer[size - 1];
}
// whether it's empty
bool Empty(void) const
{
return size > 0 ? false : true;
}
// number of elements in container
int Size(void) const
{
return size;
}
private:
int size;
static const int containerSize = 50;
T* stackContainer;
public:
stack() : size(0)
{
stackContainer = new T[containerSize];
}
~stack()
{
delete[] stackContainer;
}
};
int main(void)
{
stack<int> stackTest;
cout << stackTest.Size() << endl;
stackTest.Push(4);
stackTest.Push(10);
stackTest.Push(3);
cout << "Stack Top Element : " << stackTest.Top() << endl;
cout << "Stack Size : " << stackTest.Size() << endl;
stackTest.Pop();
if (stackTest.Empty() == false)
{
cout << "Stack Top Element : " << stackTest.Top() << endl;
cout << "Stack Size : " << stackTest.Size() << endl;
}
return 0;
}
'공부 > Data Structure' 카테고리의 다른 글
double linked list 구현 (0) | 2020.07.13 |
---|---|
single linked list 구현 (0) | 2020.07.12 |
queue 구현 (0) | 2020.07.12 |