293 words
1 minutes
스택 구현
스택 구현
private static final int Bank = 5; //용량
private Object[] arr; //값을 받을 배열
private int top; //스택의 맨 위 요소 체크
public Main() {
this.arr = new Object[Bank];// 배열 생성
this.top = -1;
}
public boolean isFull() {
return top == arr.length -1;
}
public boolean isEmpty() {
return top == -1;
}
private void resize() {//메소드 내에서만 사용하므로 private
int arr_capacity = arr.length - 1;// 배열은 0부터 시작함으로 -1
if (top == arr_capacity) {// 용량이 꽉찬 경우
int new_capacity = arr.length * 2;//용량 두배
arr = Arrays.copyOf(arr, new_capacity ); //배열 new_capacity 용량 설정
}
if (top < (arr_capacity / 2)) {
int half_capacity = arr.length / 2;// 기존 용량의 반
arr = Arrays.copyOf(arr, Math.max(half_capacity, Bank)); //half_capacity 와 기본 용량 중 큰걸 복사
}
}
public Long push(Long value) {
//1.배열 용량 검사
if (isFull())
resize();
//2.원소 추가로 top++
top++;
//3.원소 추가
arr[top] = value;
return value;
}
public Long pop() {
//1.배열 확인
if (isEmpty())
throw new EmptyStackException();
//2.arr원소 백업
Long value = (Long) arr[top];
//3.해당 위치 요소 삭제
arr[top] = null;
//4.top 감소
top--;
//빈 공간이 많으면 리사이징
resize();
return value;
}
다른 블로그를 참고하며 구현했다 다음에 혼자 다시 만들어볼 예정