<aside> ❓ 스택과 큐는 선형 구조 형태인 자료구조로 데이터 간에 순서가 있고 논리적으로 이어져 있다.
</aside>
※ 추가로 스택과 큐를 하나로 합쳐 놓은 자료구조인 Deque(Double-Ended Queue)도 학습
스택(Stack)
LIFO(Last In First Out) 구조
마지막(최근)에 넣은 것을 먼저 제거
큐(Queue)
FIFO(First In First Out) 구조
먼저 넣은 것(오래된 것)을 먼저 제거
자바(JAVA)에서는 인터페이스를 통해 이 두 자료구조를 제공하고 있다.
스택은 순차적으로 데이터를 추가하고 삭제하는 자료구조로 LIFO(Last In First Out) 구조이다.
→ Stack 선언
import java.util.Stack;
Stack stack = new Stack();
→ Stack의 메서드
메서드 | 설명 |
---|---|
boolean empty() | Stack이 비어 있는지 알려준다. |
Object peek() | Stack의 맨 위에 저장된 객체를 반환 (pop과 달리 객체를 제거X) |
Object pop() | Stack의 맨 위에 저장된 객체를 꺼낸다. |
Object push(Object item) | Stack에 객체(item)을 저장한다. |
int search(Object o) | Stack에 주어진 객체(o)를 찾아서 그 위치(1부터 시작)를 반환한다. (못찾으면 -1) |
<aside> 🚨 peek이나 pop 메서드는 스택이 비어 있다면 EmptyStackException을 발생시키므로 예외 처리가 필요하다.
</aside>
큐는 데이터를 꺼낼 때 항상 첫 번째에 저장된 데이터를 삭제하는 자료구조로 FIFO(First In First Out) 구조이다.
→ Queue 선언
import java.util.Queue;
import java.util.LinkedList();
Queue queue = new LinkedList(); // Queue 인터페이스의 구현체 -> LinkedList
→ Queue의 메서드
메서드 | 설명 |
---|---|
boolean add(Object o) | 지정된 객체를 Queue에 추가한다. → 예외 발생 |
Object remove() | Queue에서 객체를 꺼내 반환한다. → 예외 발생 |
Object element() | 삭제 없이 요소를 읽어온다. → 예외 발생 |
boolean offer(Object o) | Queue에 객체를 저장한다. |
Obejct poll() | Queue에서 객체를 꺼내서 반환한다. → 비어 있으면 null |
Obejct peek() | 삭제 없이 요소를 읽어 온다. → 비어 있으면 null |