스택
- Stack은 쌓인다는 뜻을 가지고 있습니다.
- 차곡차곡 쌓인 택배 무더기에서 가장 아래 택배만 먼저 꺼낼 수는 없습니다.
- 가장 아래 쌓였다는 건 가장 먼저 들어왔다는 걸 의미합니다. (후입선출 == LIFO(Last In First Out))
- 파이썬의
list
는 스택구조 입니다.
- 입구와 출구가 같은 공간입니다.
큐(Queue)
- 입구와 출구가 따로 존재하는 공간입니다.
- 파이썬으로 문제를 풀 때에는
queue
보다 양방향 입력과 출력이 가능한 deque
(double-ended queue)가 더 선호됩니다.
- 가장 먼저 들어온 값이 가장 먼저 나갑니다. (선입선출 == FIFO(First In First Out))
공통점
- 스택과 큐 모두 선형 자료구조(1:1관계) 입니다.
- 스택과 큐 모두 삽입과 삭제의 위치가 제한적입니다.
자바의 스택과 큐
자바의 스택
Stack<String> Stack = new Stack<String>();
- 주요 메서드
- push() // 삽입
- pop() // 삭제
- peek() // 확인
자바의 큐
- 구현
- Queue를 상속받는 LinkedList,ArrayDeque등으로 구현한다
Queue<String> queue = new LinkedList<String>();
- 주요 메서드
- offer() // 삽입
- poll() // 삭제
- peek() // 확인
- Queue도 add와 remove가 있다
- poll() // 큐에 값이 비었을 때 null을 return
- remove() // 큐에 값이 비었을 때 Exception을 발생시킴