[kotlin] 코틀린으로 이중 링크드 리스트 알고리즘 작성하기

이중 링크드 리스트는 각 노드가 두 개의 링크, 즉 앞쪽 노드를 참조하는 링크와 뒤쪽 노드를 참조하는 링크를 가지고 있는 자료구조입니다. 이중 링크드 리스트는 모든 노드에 대한 양방향 액세스를 제공하여 삽입, 삭제 및 탐색 작업을 효율적으로 수행할 수 있습니다. 코틀린으로 이중 링크드 리스트를 구현하는 방법에 대해 알아봅시다.

이중 링크드 리스트 노드 구현하기

이중 링크드 리스트의 각 노드는 데이터 요소와 앞쪽 노드와 뒤쪽 노드를 참조하기 위한 링크를 가지고 있어야 합니다. 코틀린으로 이를 구현하는 간단한 방법은 다음과 같습니다.

class Node<T>(
    var data: T,
    var prev: Node<T>? = null,
    var next: Node<T>? = null
)

위 코드에서 Node 클래스는 데이터 요소와 앞쪽 노드와 뒤쪽 노드를 참조하기 위한 prevnext 링크를 가지고 있습니다.

이중 링크드 리스트 구현하기

이제 Node 클래스를 사용하여 이중 링크드 리스트를 구현해봅시다. 아래는 간단한 이중 링크드 리스트의 구현 예제입니다.

class DoublyLinkedList<T> {
    private var head: Node<T>? = null
    private var tail: Node<T>? = null
    
    fun addToFront(data: T) {
        val newNode = Node(data)
        if (head == null) {
            head = newNode
            tail = newNode
        } else {
            newNode.next = head
            head?.prev = newNode
            head = newNode
        }
    }
    
    // 다른 메서드들의 구현 생략
}

위의 코드에서 DoublyLinkedList 클래스는 addToFront 메서드를 가지고 있으며, 새로운 노드를 생성하여 리스트의 맨 앞에 추가합니다.

마치며

코틀린을 사용하여 이중 링크드 리스트를 구현하는 방법에 대해 알아보았습니다. 이외에도 삭제, 탐색, 뒤쪽에 요소 추가 등의 작업을 수행하기 위한 메서드들을 추가로 구현할 수 있습니다.

더 많은 자료구조와 알고리즘을 구현하고 싶다면 Kotlin Data Structures and Algorithms 프로젝트를 확인해보십시오.