Stack : 스택
- 특징
1) 후입선출(LIFO) 구조를 가지는 자료구조
2) 삽입은 Push, 삭제는 Pop 연산을 사용
- 장점
1) 구현이 간단하다
2) 함수 호출의 역추적, 수식 계산, 문자열 역순 등에서 유용하다
- 단점
1) 중간 원소에 접근하기 어렵다
Stack.h
#pragma once
void DoStack();
class Stack
{
public:
Stack();
bool IsEmpty();
bool IsFull();
void Push(DataType data);
DataType Pop();
DataType Peek();
private:
int Top;
DataType Data[MAX_SIZE];
};
Stack.cpp
#include "../../stdafx.h"
#include "Stack.h"
void DoStack()
{
Stack s;
s.Push(1);
s.Push(2);
s.Push(3);
cout << s.Pop() << endl; // 3
cout << s.Peek() << endl; // 2
cout << s.Pop() << endl; // 2
cout << s.Pop() << endl; // 1
cout << s.Pop() << endl; // -1
Pause;
return;
}
Stack::Stack()
{
Top = -1;
}
bool Stack::IsEmpty()
{
return Top == -1;
}
bool Stack::IsFull()
{
return Top == MAX_SIZE - 1;
}
void Stack::Push(DataType data)
{
if (IsFull())
{
cout << "Stack Overflow" << endl;
return;
}
Data[++Top] = data;
return;
}
DataType Stack::Pop()
{
if (IsEmpty())
{
cout << "Stack Underflow" << endl;
return -1;
}
return Data[Top--];
}
DataType Stack::Peek()
{
if (IsEmpty())
{
cout << "Stack Underflow" << endl;
return -1;
}
return Data[Top];
}
'자료구조' 카테고리의 다른 글
[C++/자료구조] 힙(Heap) (0) | 2023.07.15 |
---|---|
[자료구조] 자료구조별 게임의 기능 구현 예시 (0) | 2023.07.14 |
[C++/자료구조] 이진트리(Binary Tree) (0) | 2023.07.08 |
[C++/자료구조] 큐(Queue) (0) | 2023.07.08 |
[C++/자료구조] 연결 리스트(Linked List) & 양방향 연결 리스트(Double Linked List) (0) | 2023.07.08 |
댓글