스택의 특징
Stack은 말그대로 쌓아 올린다.
제일 늦게 들어온 녀석이 가장 처음 나간다.(FILO)
음식점의 쌓인 그릇을 생각하면 쉽다. 차곡 차곡 쌓아올려져 위에서 부터만 꺼낼수가 있다.
웹 페이지를 사용할때도 스택의 원리와 같다.
링크를 누를때마다 새로운 페이지로 이동하며 되돌리기 버튼을 누르면 이전에 사용한 페이지가 나온다.
ADT
스택을 구현하는데 있어서 필요한 ADT는 다음과 같다.
주요 메서드
- push(e) : e를 삽입
- pop() : 가장 나중에 삽입된 원소를 삭제하여 반환
보조 메서드
- top() : 가장 나중에 삽입된 원소를 삭제없이 반환
- size() : 현재 저장된 원소의 수 반환
- isEmpty() : 스택이 비어있는지 여부 반환
- elements() : 원소 전체 반환
Java의 API
java.util.Stack에 위치한다.
<매소드>
boolean isEmpty() - 비어있는 스택인지 아닌지 판단
Object peek() - 가장 최근에 삽입된 데이터 반환
Object pop() - 가장 최근에 삽입된 데이터 삭제후 반환
Object push(Object item) - item 삽입
int search(Object obj) - 원하는 데이터 찾아서 있다면 위치 없다면 -1 반환
array로 만든 Stack
스택의 특성상 제일 첫 요소만 접근하여 사용 함으로 Linked가 아닌 ArrayList로 사용한다.
import java.util.ArrayList;
public class arrayStack {
private int size;
private ArrayList<Object> stack=new ArrayList<>();
arrayStack(){
size=0;
}
public Object push(Object data){
stack.addFirst(data);
size++;
return data;
}
public Object pop(){
Object obj=stack.remove(0);
size--;
return obj;
}
public Object peek(){
return stack.get(0);
}
public boolean isEmpty(){
if(size==0)
return true;
return false;
}
public int search(Object obj){
return stack.indexOf(obj);
}
}