티스토리 뷰

Study/Java

[스터디 4주차] Stack

나갱 2022. 1. 2. 23:40

Stack 이란?

- 상자에 물건을 쌓아 올리 듯이 데이터를 쌓는 자료구조이며, 삽입과 삭제를 리스트의 한쪽(top)에서 만 한다.

- LIFO(Last In First Out) 구조

Stack 구현

package study;


public class Stack {

    private int[] elements;
    private int top = 0;
    private int size = 2;

    /**
     * Stack 생성
     * default size =16
     */
    public Stack(){
        elements = new int[size];
    }

    public Stack(int data){
        elements = new int[size];
        elements[top++] = data;
    }

 // push
    public void push(int data){
        // 용량이 초과할 경우 크기 확장 후 기존 데이터 migration
        if(top == elements.length){
            System.out.println("[사이즈 확장] Size : " + size +" -> " + (top+5));
            size = top +5;
            int[] extendElements = new int[size];
            // migrate
            for(int i=0; i<top; i++){
                extendElements[i] = elements[i];
            }
            elements = extendElements;
        }
//        System.out.println("top:"+top);
        System.out.println("데이터 추가 : "+data);
        elements[top++] = data;

    }

// pop
    public int pop(){
        if(top == 0) {
            System.out.println("데이터가 존재하지 않습니다.");
            return -1;
        }
        else {
            int num = elements[--top];
            elements[top] = 0;
            return num;
        }
    }

// print

    public void print(){
        for(int i=0; i<top; i++){
            System.out.print(elements[i]+" ");
        }
        System.out.print( "<- top");
        System.out.println();
    }
}

 

'Study > Java' 카테고리의 다른 글

[스터디 4주차] Queue  (0) 2022.01.02
[스터디 4주차] LinkedList로 Stack 구현  (0) 2022.01.02
[스터디 4주차] LinkedList  (0) 2022.01.02
[스터디 4주차] JUnit5  (0) 2022.01.02
[스터디 4주차] 선택문/반복문  (0) 2022.01.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함