728x90
📌스택이란
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 구조의 자료 구조
📌스택 주요 함수
스택은 LIFO 구조로 가장 최근에 추가한 항목이 가장 먼저 제거된다.
- push() : 스택에 자료를 넣는 함수
- pop() : 가장 최근에 추가한 자료를 빼는 함수
- isFull() : 스택이 가득 찼는지 확인하는 함수
- isEmpty() : 스택이 비었는지 확인하는 함수
📌스택 사용 사례
- 웹 브라우저 방문 기록 (뒤로가기)
- 역수 문자열 만들기
- 수식의 괄호 검사 (ex: 올바른 괄호 문자열 판단 등)
📌구현 코드
class Stack {
private:
int top, MaxSize;
int *stack;
public:
Stack(int size);
bool isFull(), isEmpty();
int pop();
void push(int element);
void print();
};
Stack::Stack(int size){
MaxSize = size;
stack=new int[MaxSize];
top=-1;
}
bool Stack::isFull(){
if(top == MaxSize-1) return 1;
else return 0;
}
bool Stack::isEmpty(){
if(top == -1) return 1;
else return 0;
}
int Stack::pop(){
if(isEmpty()==1)
cout << "Empty!\n";
else return stack[top--];
}
void Stack::push(int element){
if(isFull()==1)
cout << "Full!\n";
else stack[++top]=element;
}
void Stack::print(){
for(int i=0;i<top+1;++i)
cout << stack[i] << endl;
}
int main() {
Stack stack(5);
stack.push(1);
stack.push(3);
stack.pop();
stack.print();
return 0;
}
728x90
'스터디 > Algorithm' 카테고리의 다른 글
[Algorithm] Prefix Sum 구간합 (0) | 2021.05.11 |
---|---|
[자료구조] Queue (큐) (0) | 2021.03.08 |
[Algorithm] Binary Search (이분 탐색) 개념 (0) | 2021.03.02 |
[Algorithm] Binary Search (이분 탐색) (0) | 2021.02.26 |
자료형 크기 및 범위 정리 (0) | 2021.02.26 |
댓글