![[C++] 스택 직접 구현해보기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgTin7%2Fbtr9A38hO1C%2FHameTpVo0ZCe3Qhk2lhBn1%2Fimg.png)
[C++] 스택 직접 구현해보기프로그래밍 공부/자료구조&알고리즘 공부2023. 4. 12. 01:34
Table of Contents
스택(stack)은 후입선출(LIFO, Last In First Out)의 구조를 가지고있다.
스택사용의 예라고 한다면 우리가 인터넷 브라우저를 사용할때 쓰는 뒤로가기가 있다.
C++의 STL, C#의 Collection에서 기본으로 구현되어있는 스택만 쓰다가 자료구조들을 한번 다시 점검&공부하는 느낌으로 스택을 직접 정말 간단하게 구현해봤다.
[ MyStack.h - 선언 ]
#pragma once
class MyStack
{
private:
int pointer = 0;
int stack[1000] = { 0, };
public:
int Count();
bool IsEmpty();
void Push(int value);
int Pop();
void Clear();
};
[MyStack.cpp - 정의]
#include "MyStack.h"
int MyStack::Count()
{
return pointer;
}
bool MyStack::IsEmpty()
{
if (pointer == 0)
return true;
else
return false;
}
void MyStack::Push(int value)
{
stack[pointer++] = value;
}
int MyStack::Pop()
{
if (IsEmpty())
return -1;
return stack[--pointer];
}
void MyStack::Clear()
{
pointer = 0;
}
스택의 가장 기본적인 삽입 함수 Push
가장 마지막에 넣은 top부분의 데이터를 빼는 Pop
비어있는지 확인하는 IsEmpty
삽입한 수를 확인하는 Count
데이터를 전부 지우는 Clear
이렇게 총 5개 함수를 구현했다.
[Main]
#include <iostream>
#include "MyStack.h"
using namespace std;
int main()
{
MyStack stack;
cout << "삽입 전 IsEmpty -> " << stack.IsEmpty() << "\n";
stack.Push(100);
stack.Push(200);
stack.Push(300);
cout << "삽입 후 IsEmpty -> " << stack.IsEmpty()<<"\n";
cout << "스택 카운트 -> " << stack.Count() << "\n";
cout << "300꺼내기 -> " << stack.Pop()<<"\n";
cout << "200꺼내기 -> " << stack.Pop()<<"\n";
stack.Clear();
cout << "Clear 후 IsEmpty -> " << stack.IsEmpty() << "\n";
}
'프로그래밍 공부 > 자료구조&알고리즘 공부' 카테고리의 다른 글
[C++] 연결리스트 직접 구현해보기 (0) | 2023.04.18 |
---|---|
[C++] 큐 직접 구현해보기 (0) | 2023.04.12 |
버블정렬 알고리즘 개선하기 (0) | 2022.07.22 |
셸 정렬(Shell Sort) (0) | 2022.07.19 |
단순 선택 정렬 & 단순 삽입 정렬 (0) | 2022.07.18 |
@데브준우 :: 개발초보 JW의 성장일기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!