Stack이란?
stack은 선형 자료 구조로 한 쪽 끝에서만 자료를 넣거나 뺄 수 있다.
LIFO(Last In First Out)으로 나중에 들어간 데이터가 먼저 나오는 데이터를 저장한다.
Stack의 메서드
- push(item) :: item을 스택에 추가한다.
- pop() :: 스택에서 가장 위에 있는 item을 빼고, 그 수를 반환한다.
- peek() :: 스택의 가장 위에 있는 정수를 반환한다. (가장 위에 있는 item을 스택에서 빼지 않음)
- isEmpty() :: 스택이 비어 있을 때 true를 반환한다.
Stack 시간 복잡도
- 삽입(push) :: 스택의 가장 위에 데이터를 추가하기 때문에 O(1)
- 삭제(push) :: 스택의 가장 위에 있는 데이터를 삭제하기 때문에 O(1)
- 읽기(peek) :: 스택의 가장 위에 있는 데이터를 가져와 읽으면 되기 때문에 O(1)
- 탐색(Search) :: 스택의 가장 위에 있는 데이터부터 하나씩 찾아가야 되기 때문에 O(n)
Stack 구현
static class Stack {
private int[] s;
private int index=0;
public Stack(int n) {
s = new int[n];
}
public void push(int num) {
s[index++] = num;
}
public int pop() {
if(index > 0) {
return s[--index];
}
else return -1;
}
public int size() {
return index;
}
public int empty() {
return index==0 ? 1 : 0;
}
public int peek() {
if(index > 0) return s[index-1];
else return -1;
}
}
참고 자료
[Java] Stack 클래스는 무엇이고 문제점은 무엇일까?
Stack 클래스란 무엇인가? Stack 이라는 자료구조는 메모리에서도 쓰이고 실생활에서도 볼 수 있는 자료구조 입니다. (수식계산, 수식괄호검사, 웹브라우저의 뒤로/앞으로) 위와 같이 LIFO(후입 선출
devlog-wjdrbs96.tistory.com
[자료구조] 스택(Stack)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'자료구조' 카테고리의 다른 글
[Data Structure] Linked List (0) | 2023.04.22 |
---|
댓글