💡스택의 특징💡
- 맨 마지막 위치(top)에서만 자료를 추가,삭제, 꺼내올 수 있음 ( 중간의 자료를 꺼낼 수 없음)
- Last In First Out ( 후입선출 ) 구조
- 택배 상자가 쌓여있는 모양
- 가장 최근의 자료를 찾아오거나 게임에서 히스토리를 유지하고 이를 무를때 사용할 수 있음
- 데이터의 순서를 반대로 뒤집고 싶으면 스택에 넣고 뺌
- 함수의 메모리는 호출 순서에 따른 stack 구조
- jdk 클래스 : Stack
스택의 메서드
- boolean empty()
- Object peek()
- Object pop()
- Object push(Object item)
- int search(Object o)
요소를 넣고자 하는 경우 - push
- 맨 마지막에만 넣을 수 있다
- 스택이 꽉 차있을 경우 오류, 아닐 경우 addElement로 data 추가
public void push(int data){
if (isFull()){
System.out.println("Stack is Full");
return;
}
arrayStack.addElement(data);
top++;
}
요소를 삭제하고자 하는 경우 - pop
- 맨 마지막 요소만 삭제할 수 있다
- 스택이 비어있을 경우 오류, 아닐 경우 removeElement로 삭제
public int pop(){
if (isEmpty()){
System.out.println("Stack is Empty");
return MyArray.ERROR_NUM;
}
return arrayStack.removeElement(--top); // top-1 하고 그걸 삭제
}
요소를 하나 선택할 경우(삭제 x) - peek
- 맨 마지막 요소만 선택(출력)할 수 있다
- 스택이 비어있을 경우 오류, 아닐 경우 getElement로 불러옴
public int peak(){
if (isEmpty()){
System.out.println("Stack is Empty");
return MyArray.ERROR_NUM;
}
return arrayStack.getElement(--top);
}
스택이 비었는지 꽉 차있는지 확인하는 메서드 - empty
public boolean isFull(){
if (top == arrayStack.ARRAY_SIZE){
return true;
}
else return false;
}
public boolean isEmpty(){
if (top == 0){
return true;
}
else return false;
}
스택의 활용
- 수식 계산
- 수식 괄호 검사
- 워드 프로세서의 undo/redo
- 브라우저의 뒤로 앞으로