isFull 메소드 // isEmpty 메소드
Work Flow

Stack 클래스
public class ArrayStack {
    private int top;
    private int maxSize;
    private Object[] stackArray;            // Object == 어떤 클래스든 다 담을 수 있음

    // 생성자 (배열 크기 -> 배열 초기화, top은 비어있음)
    public ArrayStack (int maxSize) {
        this.maxSize = maxSize;
        stackArray = new Object[maxSize];
        top = -1;
    }

    // 스택 공간이 비어 있는지
    public boolean isEmpty() {
        return (top == -1);                 // -1이면 true고, -1이 아니면 false
    }

    // 스택 공간이 가득 차 있는지
    public boolean isFull() {
        return (top == maxSize -1);         // 배열 사이즈가 10이면 top은 0~9번지 -> 9
    }

    // 추가 -- push
    public void push(Object item) {
        if (isFull()) {
            System.out.println("스택 공간이 가득 차 있음");
            return;             // break
        }
        top++;                  // top은 -1 에서 0
        stackArray[top] = item; // 0번지에 item 삽입
    }

    // 삭제 -- pop
    public Object pop() {       // 삭제된 데이터를 Return -- 반환타입 Object
        Object item = peek();   // top 위치의 아이템을 일단 확인
        if (item == null) {
            System.out.println("스택 공간이 비어 있음");
            return null;
        }
        top--;                  // top은 n에서 n-1
        return item;
    }

    // top(최상단)에 해당되는 데이터 (반환)
    public Object peek() {
        if (isEmpty()) {
            System.out.println("스택 공간이 비어 있음");
            return null;
        }
        return stackArray[top];
    }
}

 

 

메인함수 코드
public class MainClass {
    public static void main(String[] args) {
    /*
        Stack
        First in last out = FILO
        push, pop, peek
        isEmpty, isFull
     */

        // 크기가 5로 Stack 초기화
        ArrayStack stack = new ArrayStack(5);

        // 1번째 요소 삽입
        String str = "AAA";
        stack.push(str);

        // 2번째 요소 삽입
        str = "BBB";
        stack.push(str);

        // 3번째 요소 삽입
        str = "CCC";
        stack.push(str);

        // 최상단 데이터 확인
        String peek = (String) stack.peek();
        System.out.println(peek);

        // 최상단 데이터 삭제
        stack.pop();

        // 최상단 데이터 확인
        peek = (String) stack.peek();
        System.out.println(peek);

    }
}

+ Recent posts