2024.11.28 - [Knowledge/자료구조] - [자료구조] 스택(stack)과 자바를 통한 구현(배열, ArrayList)
스택의 대한 설명은 위 포스팅을 참고 바란다.
스택의 추상자료형
푸시(push), 팝(pop), 가득 찼는지 확인(isFull), 비었는지 확인(isEmpty)과 같은 연산과 최근에 삽인한 데이터 위치를 확인할 톱(top)도 있다.
구분 | 정의 | 설명 |
연산 | boolean isFull() | 스택에 들어 있는 데이터 개수가 maxsize인지 확인해 boolean값을 반환한다. 가득 차 있다면 true, 아니면 false이다. |
boolean isEmpty() | 스택에 들어 있는 데이터가 하나도 없는지 확인해 boolean값을 반환한다. 데이터가 하나라도 있는 false, 아니면 true이다. | |
void push(ItemType item) | 스택에 데이터를 푸시한다. | |
ItemType pop() | 스택에서 최근에 푸시한 데이터를 팝하고, 그 데이터를 반환한다. | |
상태 | int top | 스택에서 최근에 푸시한 데이터의 위치를 기록한다. |
ItemType data[maxsize] | 스택의 데이터를 관리하는 배열이다. 최대 maxsize개의 데이터를 관리한다. |
해당 표는 추상 자료형이기 때문에 구현에 대한 내용은 없다. 세부 구현은 위 포스팅을 참고하면 된다.
Stack 클래스
Stack
클래스는 Java의 컬렉션 프레임워크에 포함된 후입선출(LIFO: Last In, First Out) 구조를 구현한 클래스이다. java.util.Stack
을 사용하여 스택 자료구조를 간단히 구현할 수 있다.
주요 메서드
메서드 | 설명 |
push(E item) | 스택의 맨 위에 데이터를 추가합니다. |
pop() | 스택의 맨 위에 있는 데이터를 제거하고 반환합니다. |
peek() | 스택의 맨 위에 있는 데이터를 제거하지 않고 반환합니다. |
isEmpty() | 스택이 비어 있는지 확인합니다. |
search(Object o) | 스택에서 해당 객체의 1-based 위치를 반환합니다. 없으면 -1을 반환합니다. |
size() | 스택에 저장된 데이터 개수를 반환합니다. |
사용 예제
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
// 스택 생성
Stack<Integer> stack = new Stack<>();
// 데이터 추가 (push)
stack.push(10);
stack.push(20);
stack.push(30);
// 최상단 데이터 확인 (peek)
System.out.println("Top element: " + stack.peek()); // 30
// 데이터 제거 (pop)
System.out.println("Popped: " + stack.pop()); // 30
System.out.println("Top element after pop: " + stack.peek()); // 20
// 스택 상태 확인
System.out.println("Is stack empty? " + stack.isEmpty()); // false
System.out.println("Stack size: " + stack.size()); // 2
}
}
'Language > Java' 카테고리의 다른 글
[Java] 기본형 vs 참조형 (0) | 2025.01.04 |
---|---|
[Java] 클래스와 데이터 (2) | 2024.12.31 |
[Java] Math 클래스 (1) | 2024.11.15 |
[Java] startsWith와 endsWith (0) | 2024.11.15 |
[java] Arrays.asList() remove(), add() java.lang.UnsupportedOperationException 발생 (0) | 2024.07.31 |