5. Stack

김현우·2024년 6월 20일
0

자료구조

목록 보기
11/12
post-thumbnail

스택의 특징

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);
    }
}
profile
학생

0개의 댓글