티스토리 뷰
스택 과 큐 의 개념과 각 자료구조를 JAVA코드로 작성해보자
스택(Stack)과 큐(Queue)는 자료구조로서 데이터를 저장하고 관리하는 방법을 나타냅니다. 각각의 특징과 코드를 살펴보겠습니다.
스택(Stack)
- 특징:
- 후입선출(Last-In-First-Out, LIFO) 원칙을 따릅니다. 즉, 마지막에 삽입된 요소가 먼저 제거됩니다.
- 주로 함수 호출 스택, 역추적(backtracking), 괄호 검사 등에 사용됩니다.
- Java 코드:
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 요소 추가 (push)
stack.push(1);
stack.push(2);
stack.push(3);
// 요소 제거 (pop)
int top = stack.pop(); // 3이 제거되고 반환됨
System.out.println("Popped: " + top);
// 스택이 비어 있는지 확인 (empty)
boolean isEmpty = stack.isEmpty();
System.out.println("Is Stack Empty: " + isEmpty);
// 스택의 맨 위 요소 확인 (peek)
int peeked = stack.peek(); // 현재 맨 위 요소는 2
System.out.println("Top Element: " + peeked);
}
}
큐(Queue)
- 특징:
- 선입선출(First-In-First-Out, FIFO) 원칙을 따릅니다. 즉, 먼저 삽입된 요소가 먼저 제거됩니다.
- 주로 자원 스케줄링, 대기열 관리 등에 사용됩니다.
- Java 코드 (자바에서 큐를 구현하기 위해
java.util.Queue
인터페이스를 사용하며,LinkedList
클래스를 일반적으로 사용합니다):
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 요소 추가 (offer)
queue.offer("Apple");
queue.offer("Banana");
queue.offer("Cherry");
// 요소 제거 (poll)
String front = queue.poll(); // "Apple"이 제거되고 반환됨
System.out.println("Removed: " + front);
// 큐가 비어 있는지 확인 (isEmpty)
boolean isEmpty = queue.isEmpty();
System.out.println("Is Queue Empty: " + isEmpty);
// 큐의 맨 앞 요소 확인 (peek)
String peeked = queue.peek(); // 현재 맨 앞 요소는 "Banana"
System.out.println("Front Element: " + peeked);
}
}
위의 코드는 간단한 스택과 큐의 동작 방식을 보여주는 예제입니다. 실제 프로그래밍에서는 상황에 따라 스택과 큐를 사용하여 다양한 문제를 해결할 수 있습니다.