자료구조

[Java]Stack 이란? , stack 구현해보기

jay Joon 2020. 12. 6. 03:17

스택(Stack)

한 쪽 에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조

 

스택 자료구조

 

 


구현 class

public class Stack {
    private final int [] stackList;
    private final int stackSize;
    private int stackPointer;

    public Stack(int stackSize) {
        this.stackList = new int[stackSize];
        this.stackPointer = -1;
        this.stackSize = stackSize;
    }

    public void push(int data){
        if(stackSize-1 ==stackPointer){
            System.out.println("더 이상 추가할 수 없음");
        }else {
            stackList[++stackPointer] = data;
        }
    }

    public int pop(){
        if(stackPointer ==-1){
            System.out.println("요소를 먼저 추가해주세요");
            return 0;
        }else {
            int i = stackList[stackPointer];
            stackPointer--;
            return i;
        }
    }
}

Test 코드 

class StackTest {
    @Test
    @DisplayName("요소 추가")
    void stack_add(){
        Stack stack = new Stack(2);
        stack.push(1);

        assertThat(stack.pop()).isEqualTo(1);
    }

    @Test
    @DisplayName("요소 꺼내기")
    void stack_pop(){
        int i = 1;
        Stack stack = new Stack(2);
        stack.push(10);
        stack.push(i);
        int pop = stack.pop();

        assertThat(pop).isEqualTo(i);
    }

}

 

그림출처 : ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D