공부/Data Structure

stack 구현

Lero God 2020. 7. 8. 23:02

메모리를 동적으로 관리하거나 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