스택

2024. 3. 21. 18:28멋쟁이사자처럼

후입선출

 

스택 구현의 중요 키워드

  • push : 값을 넣음
  • pop : 값을 꺼냄
  • peek : 빼지는 않고 값만 알려줌
  • top : 현재 가리키고 있는 인덱스
  • isEmpty : 배열이 비어있는지 확인
  • isFull : 배열이 꽉 차있는지 확인

<코드>

public class StackExam {
    private int[] stackArray; // 스택을 저장할 배열
    private int stackCapacity; // 스택의 최대 크기
    private int top = -1; // 스택 포인터

    public StackExam(int stackCapacity) {
        this.stackArray = new int[stackCapacity];
        this.stackCapacity = stackCapacity;
    }
    public boolean isFull() {
        if (top >= stackCapacity){
            return true;
        }else{
            return false;
        }
    }
    public boolean isEmpty() {
        if (top == -1){
            return true;
        }else{
            return false;
        }
    }

    public void push(int item) {
        if (isFull() == true) {
            System.out.println("배열이 가득 찼습니다");
        }else{
            stackArray[++top] = item;
            System.out.println("입력한 값:" + item);
        }
    }
    public void pop() {
        if (isEmpty() == true){
            System.out.println("배열이 비어있습니다");
        }else {
            System.out.println("꺼낸 값: " + stackArray[top--]);
        }
    }
    public void peek() {
        if (isEmpty() == true){
            System.out.println("배열이 비어있습니다.");
        }else {
            System.out.println("최상위에 있는 값: " + stackArray[top]);
        }
    }

    public static void main(String[] args) {
        StackExam myStack = new StackExam(10);
        myStack.push(1);
        myStack.pop();
        myStack.push(5);
        myStack.push(2);
        myStack.pop();
        myStack.peek();
        myStack.push(12);
        myStack.pop();
        myStack.pop();
        myStack.pop();
    }

}

'멋쟁이사자처럼' 카테고리의 다른 글

재귀함수와 꼬리재귀  (0) 2024.03.21
  (0) 2024.03.21
이진 탐색  (0) 2024.03.20
순차 탐색, 보초법  (0) 2024.03.20
클래스(class)  (0) 2024.03.20