[Java/자료구조] 스택(Stack)과 큐(Queue)
in Study / Data Structure on Stack, Queue, Java
☑️ Stack
LIFO(Last In, First Out), 마지막에 삽입된 요소가 가장 먼저 제거되는 구조
- java.util 패키지에서 제공하는 Stack 클래스를 사용한다.
Stack의 선언 방법
Stack<자료형> stack = new Stack<>();
Method
메서드 | 설명 |
---|---|
push(E e) | - 스택의 맨 위에 지정된 요소를 추가한다. |
add(E e) | - 스택의 맨 위에 지정된 요소를 추가한다. - 성공 시 true를, 실패 시 false를 반환한다. |
pop() | - 스택의 맨 위에 요소를 제거하고 반환한다. |
remove(index) | - 원하는 index의 값을 삭제한다. |
peek() | - 스택의 맨 위에 요소를 제거하지 않고 반환한다. |
clear() | - 스택의 모든 요소를 삭제한다. |
size() | - 스택의 사이즈를 반환한다. |
isEmpty() | - 스택이 비어 있는 지 여부를 반환한다. |
스택(Stack)을 이용한 예시
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(10);
stack.push(20);
stack.push(30);
System.out.println("Stack: " + stack); // Stack: [10, 20, 30]
System.out.println("Peek: " + stack.peek()); // Peek: 30
System.out.println("Pop: " + stack.pop()); // Pop: 30
System.out.println("Stack after pop: " + stack); // Stack after pop: [10, 20]
System.out.println("Stack size: " + stack.size()); // Stack size: 2
System.out.println("Is Stack empty? " + stack.isEmpty()); // Is Stack empty? false
stack.clear();
System.out.println("Stack after clear: " + stack); // Stack after clear: []
}
}
☑️ Queue
FIFO(First In, First Out), 가장 먼저 삽입된 요소가 가장 먼저 제거되는 구조
- java.util 패키지에서 제공하는 Queue 인터페이스를 사용한다.
Queue의 선언 방법
Queue<자료형> queue = new LinkedList<>();
Method
메서드 | 설명 |
---|---|
offer(E e) | - 큐의 맨 뒤에 지정된 요소를 추가한다. - 실패 시 false를 반환한다. |
add(E e) | - 큐의 맨 뒤에 지정된 요소를 추가한다. - 실패 시 IllegalStateException이 발생한다. |
poll() | - 큐의 맨 앞에서 요소를 제거하고 반환한다. - 큐가 비어있으면 null을 반환한다. |
remove() | - 큐의 맨 앞에서 요소를 삭제하고 반환한다. - 큐가 비어있으면 Exception이 발생한다. |
peek() | - 큐의 맨 앞에서 요소를 반환한다. - 큐가 비어있으면 null을 반환한다. |
clear() | - 큐의 모든 요소를 삭제한다. |
size() | - 큐의 사이즈를 반환한다. |
contains(E e) | - 큐에 해당 원소가 존재한다면 true, 존재하지 않는다면 false를 반환한다. |
isEmpty() | - 큐가 비어 있는 지 여부를 반환한다. |
큐(Queue)를 이용한 예시
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
queue.offer("Apple");
queue.offer("Banana");
queue.offer("Cherry");
System.out.println("Queue: " + queue); // Queue: [Apple, Banana, Cherry]
System.out.println("Peek: " + queue.peek()); // Peek: Apple
System.out.println("Poll: " + queue.poll()); // Poll: Apple
System.out.println("Queue after poll: " + queue); // Queue after poll: [Banana, Cherry]
System.out.println("Queue size: " + queue.size()); // Queue size: 2
System.out.println("Is Queue empty? " + queue.isEmpty()); // Is Queue empty? false
queue.clear();
System.out.println("Queue after clear: " + queue); // Queue after clear: []
}
}