stack은 ‘쌓다’, ‘더미’를 의미합니다.

밑에서 위로 쌓이는 구조로 후입선출(선출후입) LIFO(Last In First Out)방식을 따라 가장 상단의 있는 데이터 Top부터 삭제 가능하며 순서를 무시한 채 중간 또는 아래 데이터 부터 삭제하는 건 불가능합니다.

Stack 사용법


생성자함수로 객체를 만들어 메소드에 접근할 수 있습니다.

메소드 기능
push(값) 값을 맨 위에 쌓아줍니다
pop() Top데이터를 삭제합니다
peek() Top데이터를 불러옵니다
search(값) Stack 내 값의 위치를 찾아줍니다
empty() Stack이 비었는지 boolean return


주로 쓰이는 함수들은 위와 같은데 search()의 경우 위에서 아래로 데이터를 가져오는 Stack특성상 해당 값이 top의 위치 기준으로 얼마나 떨어져있는지를 알려줍니다.

Top데이터를 변수로 넣으면 -1이 나옵니다.
예제를 통해 구체적으로 어떻게 쓰이는 지 알아보도록 하겠습니다.


1. push()

다음과같은 코드로 stack에 값을 넣어보겠습니다.

        String s = "abcd";
        Stack<Character> stack = new Stack<Character>();
        for(char c: s.toCharArray()){
            stack.push(c);
            System.out.println(stack.peek());
        }

image

반복문 내 stack.push는 그림에 나온 것처럼 맨 처음으로 push된 ‘a’ 가 가장 아래 놓이고, 마지막으로 push된 d가 Top데이터가 됩니다.



2. pop() & peek()

        stack.pop();
        System.out.println(stack.peek());

image

이때, pop()을 한 뒤 peek()한 내용을 출력하면, top 데이터 d가 삭제되고 새로운 top데이터가 된 c가 출력됩니다.



        System.out.println(stack.search('a'));//3
        System.out.println(stack.search('b'));//2
        System.out.println(stack.search('c'));//1
        System.out.println(stack.search('d'));//-1


4. empty()

해당 stack에 ‘a’,’b’,’c’가 들어 있기 때문에 stack.empty()의 값은 false가 됩니다.




참고

💻 https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html

태그:

카테고리:

업데이트:

댓글남기기