본문 바로가기
Algorithm & Data structure

[Data Structure] Stack(스택) 자료구조란? -Java

by lucas_owner 2023. 1. 16.

Stack 자료구조란 무엇인가? - Java

 

1. 스택이란?

- 'Stack'은 한쪽 방향에서만 자료를 넣고 빼는 형태의 자료구조이다

- LIFO(Last In First Out) - 선입후출 의 특징을 갖고 있으며, 제일 먼저 들어간 데이터는 제일 마지막에 꺼낼 수 있다는 의미를 가진다.

- 이해하기 쉬운 예시로 -> '프링글스' 과자를 상상하면 쉬울 것이다. 제일 먼저 들어간 과자는 제일 마지막에 먹을 수 있게 되는 방식인 것이다.

- Stack이 많이 사용되는 곳은 - DFS(깊이 우선 탐색)이다. 

출처: 위키백과(WiKi)

2. Java Stack 라이브러리 Mehtods

  • push(object) : object를 Stack 에 삽입한다.
  • pop() : stack에 있는 최상단 object를 삭제 하고 반환한다.
  • peek() : stack에 있는 최상단 object를 반환한다. (삭제되지 않는다)
  • empty() : stack이 비어있으면 true 반환, 비어있지 않으면 false 반환
  • search(object) : object의 위치를 반환, stack의 최상단은 1(0이 아님),   결과가 없으면 -1 반환
  • clear() : stack 내부의 전체 값 제거

3. Code

import java.util.Stack; // stack 라이브러리 import 

public class stack_basic {

	public static void Main(String[] args) {

        // Stack 선언
        Stack<Integer> intStack = new Stack<>(); //int 형
        Stack<String> stirngStack = new Stack<>(); //String 형

        // 값 추가
        intStack.push(1);
        intStack.push(2);
        intStack.push(3);

        System.out.println(intStack); //[1,2,3]

        // 값 제거
        intStack.pop(); // [1,2]

        // 값 출력
        intStack.peek(); // 2출력 (삭제되지않음)

        // 다른 메서드
        intStack.size(); 	// stack 크기 = 2
        intStack.empty(); 	// stack이 비었는지 확인 = false
        intStack.search(2); // stack 내부 값 검색 = 1(최상단 위치)
        intStack.contains(1);//stack 내부에 1이 존재하는지 -> true
        intStack.clear(); 	// stack 내부 내용 전부 삭제

	}//main
}//class

 

반응형

댓글