[Java 기초] 스텍이란?

이진영·2023년 6월 12일
0

JAVA 기초

목록 보기
3/9
post-thumbnail

Stack

후입선출(Last In First Out: LIFO)이라고 불리는 자료구조를 뜻한다.


하지만 대부분의 사람들이 그렇듯 이러한 후입선출을 말로 설명하는 만큼 이해를 하면 좋지만 그렇게 이해하기란 어려운 부분이 있다..ㅠㅠ

그렇다면 만약 스텍이라는 자료구조를 그림을 통해 알아보자!


그림을 보면 대략적으로 눈치를 채신 분들도 있겠지만, 사각형의 박스 안에 데이터를 넣는 형식이라고 볼 수 있다. 왼쪽에서 부터 오른쪽으로 데이터를 넣다(push) 보면은 가장 오른쪽에는 위와 같은 형식이 된다.

그렇 다면 바로 해당 박스가 나가는 구조도 알아 보자

해당 사진에서 왼쪽에서 부터 데이터가 순차적으로 나가는 것을 볼 수 있다. 그렇게 나가는 것의 특징을 보면 맨 먼저 들어온 데이터가 마지막에 나가고, 나중에 들어온 데이터가 가장 먼저 나가는 것을 볼 수 있는데. 이러한 해당 자료구조를 후입선출(LIFO)


그렇다면 해당 자려구조를 Java 언어를 통해 조금이나마 실습을 해보자!!

먼저 해당 자료구조 선언부 부터 알아보도록 하자!

Stack<Integer> stack = new Stack<>();

일단 먼저 첫 번째로 선언을 할때는 java에서 제공하는 모든 자료 구조가 그렇듯 Generic 한 타입을 지원을 한다. 그렇기에 타입에 따른 제약사항 없이 사용을 할 수 있다.

Push

int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Stack<Integer> stack = new Stack<>();

for (int i = 0; i < arr.length; i++) {
	stack.push(arr[i]);
	System.out.print(arr[i] + " ");
}

실행 결과
1 2 3 4 5 6 7 8 9 10

간단하다 push를 하게 된다면 stack이라는 상자 안에 데이터가 점차적으로 쌓이는 자료구조이다.


pop

while (!stack.isEmpty()) {
    System.out.print(stack.pop() + " ");
}

실행 결과
10 9 8 7 6 5 4 3 2 1

1부터 10까지의 데이터를 순차적으로 데이터를 넣었다면 후입선출에 특징을 가지고 있는 자료구조에서 데이터를 꺼낼 때는 pop을 통해서 나중에 들어간 데이터 먼저 뽑아낼 수 있다.


그밖에 자료구조 연산에 유용한 메소드를 제공하기도 한다.

stack.peek()

해당 메소드는 값을 꺼내기는 하지만 기존 스텍이라는 공간에서 값을 진짜 깨내가지는 않는다. 즉, 값을 꺼내기는 하지만 스텍이라는 공간에는 영향을 미치지 않는다.

stack.isEmpty() // 해당 stack이 비어있는지 확인 (True or False)
stack.size() // stack의 길이를 반환값으로 얻을 수 있다.
stack.contains(1) // 해당 값이 있다면 True or False를 반환한다.

그 밖에 정말 자주 사용될거 같은 메소드들은 위와 같다.

이상으로 간단하게 Stack에 대한 글을 적어봤다. 이렇게 적음으로써 내 머리에 박히길 바란다…. ㅎ

profile
내가 공부한 것들을 적는 공간

0개의 댓글