template을 이용한 스택 구현
스택 기능
push 데이터 삽입
peek 가장 최근에 삽입된 데이터에 접근
pop 가장 최근에 삽입된 데이터 꺼내오기
full 스택이 찼는지 확인
empty 스택이 비었는지 확인
size 스택 사이즈 반환
스택 구현
#include <iostream>
using namespace std;
template <typename T>
class Stack
{
private:
T* stack_data;
int top_idx;
int max_size;
public:
Stack(int stack_size)
: top_idx(-1)
, max_size(stack_size)
{
stack_data = new T[stack_size];
}
~Stack()
{
delete stack_data;
}
void push(const T& val)
{
if (full())
return;
top_idx++;
stack_data[top_idx] = val;
}
T pop()
{
if (empty())
return -1;
return stack_data[top_idx--];
}
T peek()
{
if (empty())
return -1;
return stack_data[top_idx];
}
int size()
{
return top_idx + 1;
}
bool full()
{
return top_idx == size - 1;
}
bool empty()
{
return top_idx == -1;
}
};
int main()
{
int stack_size = 5;
Stack<int> stack(stack_size);
for (int i = 1; i <= stack_size; ++i)
{
stack.push(i);
}
while (stack.empty() == false)
{
cout << stack.pop() << endl;
}
return 0;
}
'c++' 카테고리의 다른 글
[C++] 스마트 포인터 - unique_ptr, shared_ptr, weak_ptr (0) | 2023.06.09 |
---|---|
[C++] 포인터와 참조자 - Pointer, Reference (0) | 2023.06.08 |
[C++] 가상 함수 - virtual (0) | 2023.06.08 |
[C++] 객체 지향 프로그래밍(OOP, Object Oriented Programming) (0) | 2023.06.08 |
[C++] Call by value, Call by reference (0) | 2023.06.07 |
댓글