[java] 자바에서 정적 스택 구현하기

스택은 데이터를 한쪽 끝에서만 추가하거나 제거할 수 있는 자료구조입니다. 이번에는 자바에서 정적 스택을 구현하는 방법에 대해 알아보겠습니다.

정적 스택 구현하기

public class StaticStack {
    private int maxSize; // 스택의 최대 크기
    private int[] stackArray; // 스택을 저장할 배열
    private int top; // 스택의 맨 위를 가리키는 인덱스

    // 생성자
    public StaticStack(int size) {
        maxSize = size;
        stackArray = new int[maxSize];
        top = -1;
    }

    // 스택이 비어있는지 확인하는 메소드
    public boolean isEmpty() {
        return (top == -1);
    }

    // 스택이 가득 찼는지 확인하는 메소드
    public boolean isFull() {
        return (top == maxSize - 1);
    }

    // 스택에 데이터를 추가하는 메소드
    public void push(int data) {
        if (isFull()) {
            System.out.println("스택이 가득 찼습니다.");
        } else {
            stackArray[++top] = data;
        }
    }

    // 스택에서 데이터를 제거하고 반환하는 메소드
    public int pop() {
        if (isEmpty()) {
            System.out.println("스택이 비어있습니다.");
            return -1;
        } else {
            return stackArray[top--];
        }
    }

    // 스택의 맨 위에 있는 데이터를 반환하는 메소드
    public int peek() {
        return stackArray[top];
    }
}

예시 사용법

public class Main {
    public static void main(String[] args) {
        StaticStack stack = new StaticStack(5);

        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);

        System.out.println(stack.pop()); // 5
        System.out.println(stack.pop()); // 4
        System.out.println(stack.peek()); // 3
    }
}

위의 예시 코드에서는 정적 스택을 생성하고 push 메소드로 데이터를 추가하고, pop 메소드로 데이터를 제거하고 반환하며, peek 메소드로 맨 위에 있는 데이터를 확인하는 방법을 보여줍니다.

정적 스택을 사용할 때는 스택의 크기에 주의해야 합니다. 만약 스택이 가득 차 있는 상태에서 데이터를 추가하려고 하면 오류가 발생합니다. 마찬가지로 스택이 비어있는 상태에서 데이터를 제거하려고 하면 역시 오류가 발생합니다.

더 많은 메소드를 추가하거나 스택을 다양하게 활용하려면 해당 클래스를 수정하여 사용할 수 있습니다.

참고 자료