<aside> ❓ 스택과 큐는 선형 구조 형태인 자료구조로 데이터 간에 순서가 있고 논리적으로 이어져 있다.

</aside>

※ 추가로 스택과 큐를 하나로 합쳐 놓은 자료구조인 Deque(Double-Ended Queue)도 학습

Untitled

Untitled

자바(JAVA)에서는 인터페이스를 통해 이 두 자료구조를 제공하고 있다.


Stack

스택은 순차적으로 데이터를 추가하고 삭제하는 자료구조로 LIFO(Last In First Out) 구조이다.

Untitled

→ 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>

Queue

큐는 데이터를 꺼낼 때 항상 첫 번째에 저장된 데이터를 삭제하는 자료구조로 FIFO(First In First Out) 구조이다.

Untitled

→ 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