스택(Stack)

    728x90
    반응형

    2022.04.21

    92번째 포스팅

     

     

    0. Stack?

      ① 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다.

      ② 자료를 넣는 것을 '밀어넣는다' 하여 push라고 하고 반대로 넣어둔 자료를 꺼내는 것을 pop이라고 한다.

      ③ 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 된다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO 구조라고 한다.

     

     

    1. 선언 및 초기화

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package develog;
     
    import java.util.Stack;
     
    public class Develog {
        public static void main(String[] args) {
            
            /*
             * 스택의 선언 및 초기화
             * <>안의 Object에는 사용하고 싶은 클래스 혹은 Wrapper클래스를 적어준다.
             */
            Stack<Object> stack = new Stack<>();
        }
    }
     
    cs

     

     

    2. 구조

      ① Stack은 Vector를 상속받은 클래스다.

      ② Vector는 AbstractList를 상속받았고, List, RandomAccess, Cloneable 인터페이스를 구현한 클래스다.

      ③ Stack의 최상단에 위치하는 데이터를 top이라고 부른다.

     

     

    3. 메소드

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    package develog;
     
    import java.util.Stack;
     
    public class Develog {
        public static void main(String[] args) {
            
            Stack<Object> stack = new Stack<>();
            
            /*
             * empty()
             * 1. stack이 비어있으면 true를 리턴
             * 2. 그 반대의 경우 false를 리턴
             */
            stack.empty();
            
            /*
             * peek()
             * 1. LIFO구조에 맞게 top의 값을 출력
             * 2. 단순 출력만 하므로, top의 값을 출력 후 삭제하지 않음
             */
            stack.peek();
            
            /*
             * pop()
             * 1. LIFO구조에 맞게 top의 값을 출력
             * 2. 값을 출력하는 동시에 삭제
             * 3. top의 값이 변경됨
             */
            stack.pop();
            
            /*
             * push(Object)
             * 1. stack에 값을 입력
             * 2. LIFO구조에 맞게 가장 마지막에 입력된 값이 top이 됨
             */
            stack.push(new Object());
            
            /*
             * clear()
             * 1. stack의 값들을 비워줌
             * 2. stack의 메모리가 제거되는 것은 아님
             * 3. clear() 메소드는 for문을 돌면서 stack의 node와 값들을 차례대로 제거함
             * 4. stack에 새로운 값을 입력하고 싶다면 clear() 메소드 대신 new Stack()을 사용하여 인스턴스를 다시 만드는 것이 좋음
             */
            stack.clear();
            
            /*
             * size();
             * 1. stack에 들어있는 값들의 갯수를 리턴
             * 2. List 인터페이스를 구현했기 때문에 같은 메소드를 사용함
             */
            stack.size();
        }
    }
    cs
    728x90
    반응형

    '백엔드 > 자료구조' 카테고리의 다른 글

    큐(Queue)  (0) 2022.04.24

    댓글