[Kotlin] - Queue & Stack 이란?

명준쓰·2023년 7월 10일
0

안녕하세요 오늘은 Queue와 Stack에 대해 간단하게 포스팅해보겠습니다. ~.~

먼저 사전적인 의미부터 파악하고 가보겠습니다.

Queue란?

queue는 사전적인 의미로 줄, 줄을 서서 기다리다 라는 뜻입니다.
사전적인 의미 그대로 자료구조에서의 Queue도 선입선출(FIFO) 입니다.
놀이공원에 줄을 서면 줄을 선 순서대로 차례차례 놀이기구에 탑승한다고 생각하시면 이해하기 쉬울거라 생각합니다.

Kotlin의 Queue

코틀린 자체적으로는 Queue가 구현되어 있지 않지만 kotlin의 장점 중 하나인 java에 있는 클래스를 사용 가능하기 때문에 상관없습니다.

간단한 코드를 보여드리겠습니다.

import java.util.* //Queue를 사용하기 위해 임포트

fun main() {
    val queue: Queue<Int> = LinkedList() //queue = [''']

    // Elements are added to the end of the queue
    queue.add(1) // 큐의 첫번째
    queue.add(2) // 큐의 두번째
    queue.add(3) // 큐의 세번째

    while (queue.isNotEmpty()) {
        println(queue.remove()) queue의 항목 삭제
    }
}

설명을 들으시면 아시겟지만 큐를 사용하면 123의 순서대로 실행됩니다.

Stack이란?

스택은 queue와 달리 LIFO(Last In First Out)원칙을 따르는 자료구조 입니다.
즉, 마지막에 들어온 데이터가 가장 빨리 나가는 구조를 가지고 있습니다.
앱 개발자 관점에서 액티비티나 프래그먼트에 스택이 순차적으로 쌓이고 뒤로가기를 누르면 바로 전의 화면이 나오는 것을 생각하시면 됩니다.

import java.util.*

fun main() {
    val stack = Stack<Int>()

    // Elements are pushed onto the top of the stack
    stack.push(1)
    stack.push(2)
    stack.push(3)

    while (stack.isNotEmpty()) {
        // Elements are popped from the top of the stack
        println(stack.pop())
    }
}

그럼 Queue와 달리 LIFO원칙을 따르니 println(stack.pop()) 의 결과값은 321 순으로 출력이 됩니다.

간단하게 설명하고 정리한 자료구조의 기초라고 할 수 있는 queue와 stack입니다.

profile
개린이

0개의 댓글