본문 바로가기
🎯 알고리즘/개념 & 예제

[Java/자바] 스택(Stack)의 개념과 사용 방법

by 서버요정 호토론 2022. 7. 18.

[학습목표]

💡 스택의 개념과 주요 연산에 대해 알아본다
💡 스택의 메서드를 사용해 본다
💡 스택을 구현해 본다

 

1. 스택(Stack) 이란?

  • 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조
  • 스택에 저장된 자료는 선형 구조를 갖는다
    • 선형구조: 자료 간의 관계가 1:1의 관계를 갖는다 
    • 비선형구조: 자료 간의 관계가 1:N의 관계를 갖는다 (예: 트리)
  • 후입선출구조 (LIFO : Last In First Out)
    • 마지막에 삽입한 자료를 가장 먼저 꺼낸다 
    • 스택에 1-2-3 순으로 자료를 삽입하면 3-2-1과 같이 역순으로 꺼낼 수 있다
  • 스택의 활용 예시 : 프링글스, 웹 브라우저 사용 기록, 후위 표기법 계산, 하노이 탑 등

 

2. 스택의 주요 연산

  • 삽입 - push : 저장소에 자료를 저장한다
  • 삭제 - pop : 저장소에서 자료를 꺼낸다
                        꺼낼 때는 삽입한 자료의 역순으로 꺼낸다
  • 읽기 - peek : 스택의 top에 있는 item(원소)을 반환한다
                         맨위에 뭐가있는지 알려주기만함(삭제X)

 

3. 스택의 삽입/삭제 과정

빈 스택에 원소 A, B, C를 차례로 삽입 후 한번 삭제하는 연산과정

 

 

4. Stack API 사용법

4-1. Stack 선언

import java.util.Stack; //패키지 import
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
Stack<String> stack = new Stack<>(); //char형 스택 선언

 

4-2. 스택의 주요 메서드

Stack<Integer> stack = new Stack<>(); //int형 스택 선언

stack.push(1);	// 스택에 값(1)을 삽입하는 메서드
stack.pop();	// 스택 값을 삭제하는 메서드
stack.peek();	// 스택의 최상단 값을 조회하는 메서드

stack.isEmpty();// 스택이 공백인지 체크하는 메서드 (공백이면 true)
stack.size();	// 스택의 원소 개수를 알려주는 메서드
stack.clear();	// 스택의 모든 원소를 제거하는 메서드
stack.contains(1);// 스택의 값을 검색하는 메서드 (있다면 true)

 

4-3. 사용 예시

import java.util.Stack;

public class Main {
    public static void main(String[] args) {

        Stack<String> myStack = new java.util.Stack<String>();

        myStack.push("가");	//스택에 값(가) 삽입
        myStack.push("나");	//스택에 값(나) 삽입

        System.out.println(myStack.contains("다"));	//스택에  값(다) 있는지 확인
        System.out.println(myStack.peek());     	//가장 위에있는 값 출력
        System.out.println(myStack.isEmpty());  	//스택 비었는지 확인

        myStack.clear();	//스택의 모든 원소 제거
        System.out.println(myStack.size());  //스택의 원소 개수 출력
        System.out.println(myStack.pop());  //스택이 비어있는데 삭제해서 에러남
    }
}

 

실행 결과

 

댓글