💻 IT/📌 Java

[Java] Stack 이란 ? 스택(Stack) 사용법

GODSU 2022. 4. 1. 12:31
반응형

오늘은 자료구조 중 하나인 Stack에 대해서 알아보겠습니다!

Stack 이란?

스택(Stack)은 제한적으로 접근할 수 있는 나열 구조입니다. Stack의 가장 대표적인 특성은 가장 먼저 들어간 것이 가장 나중에 나온다(Last In First Out) 입니다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다.

 

 

처음 스택을 접하면 이 말이 "도통 무슨 말인가?" 할꺼예요! 그림으로 간단히 설명드리면~

 

출처 : 위키백과

그림과 같이 상자(스택)에 물건(데이터)을 넣는다고 가정하면 가장 먼저 넣은 것을 꺼내려면 위에 있는 짐(데이터)을 모두 꺼내야 처음 넣은 데이터를 꺼낼 수 있습니다. 이해되시나요~?

정리해보면. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)로 되어 있습니다. 자료를 넣는 것을 '밀어 넣는다' 하여 푸시(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 (pop)이라고 하는데, 이때 꺼내지는 자료는 가장 최근에 푸시한 자료부터 나오게 된다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO구조라고 합니다.


Stack 특성
  1. 가장 먼저들어 간것이 가장 나중에 나오는 (Last In First Out) 구조
  2. 인터럽트 처리, 수식 계산, 서브루틴 복귀 저장에 사용됨
  3. 자료구조 그래프의 깊이 우선 탐색(DFS)에 사용됨
  4. 재귀적 함수를 호출할 때 사용됨



Java Stack 사용법
import java.util.Stack; // <-- Stack class
Stack<Integer> stk = new Stack<>(); //<-- Stack 선언

Java에서는 java.util.Stack에 있는 스택 클래스를 임포트 하면 손쉽게 사용할 수 있습니다.

 

 

 

반응형



[예제]

package project;

import java.util.Stack; // <-- Stack class

public class Main {

    public static void main(String[] args) {
          
        Stack<Integer> stk = new Stack<>(); //<-- Stack 선언
        
        /* Stack 데이터 입력(push)*/
        stk.push(1);
        stk.push(2);
        stk.push(3);
        
        /* Stack 데이터 확인*/
        System.out.println("Stack 입력 데이터 확인");
        for(Integer integer : stk){
            System.out.println(integer);
        }
        
        /* Stack 데이터 출력(pop)*/
        stk.pop();
        
        /* Stack 데이터 확인*/
        System.out.println("Stack 출력 후 데이터 확인");
        for(Integer integer : stk){
            System.out.println(integer);
        }
        
    }

}

예제를 보면 스택을 생성하고, 푸시(push)와 팝(pop) 함수를 통해 데이터를 넣고 빼는 것을 확인할 수 있습니다.
이 뿐만아니라 스택에서 유용한 함수(peek, clear, contains, empty 등등)들이 있습니다.


아래 링크에서 필요한 함수들을 사용해보세요~

 

Stack (Java Platform SE 7 )

The Stack class represents a last-in-first-out (LIFO) stack of objects. It extends class Vector with five operations that allow a vector to be treated as a stack. The usual push and pop operations are provided, as well as a method to peek at the top item o

docs.oracle.com



오늘은 자료구조 중 스택(Stack)을 알아보았습니다.

감사합니다







반응형