[kotlin] 배열을 연결 리스트(Linked List) 자료구조로 사용하는 방법은?

연결 리스트(Linked List)는 데이터 요소를 노드(Node)로 구성하고, 이전 노드와 다음 노드를 연결하여 데이터를 저장하는 자료구조입니다. 배열과 달리 연결 리스트는 동적으로 크기를 조정할 수 있다는 장점이 있습니다.

Kotlin에서 배열을 연결 리스트로 사용하는 방법은 아래와 같습니다.

class Node(var data: Int) {
    var next: Node? = null
}

class LinkedList {
    private var head: Node? = null

    fun append(data: Int) {
        val newNode = Node(data)
        if (head == null) {
            head = newNode
        } else {
            var currentNode = head
            while (currentNode?.next != null) {
                currentNode = currentNode.next
            }
            currentNode?.next = newNode
        }
    }

    fun printList() {
        var currentNode = head
        while (currentNode != null) {
            println(currentNode.data)
            currentNode = currentNode.next
        }
    }
}

fun main() {
    val linkedList = LinkedList()
    linkedList.append(1)
    linkedList.append(2)
    linkedList.append(3)
    linkedList.printList()
}

Node 클래스는 연결 리스트의 노드를 나타내며, LinkedList 클래스는 연결 리스트 자체를 구현합니다. append 함수는 새로운 요소를 연결 리스트의 끝에 추가하고, printList 함수는 연결 리스트의 모든 요소를 출력합니다.

위의 예제에서는 LinkedList 클래스를 사용하여 배열을 연결 리스트로 사용하는 방법을 보여줍니다. append 함수를 사용하여 요소를 추가하고, printList 함수를 사용하여 모든 요소를 출력할 수 있습니다.

Kotlin에서도 연결 리스트를 사용하여 배열 데이터를 효율적으로 관리할 수 있습니다. 연결 리스트는 삽입과 삭제가 빈번하게 일어나는 경우 배열과 비교하여 성능 향상을 가져올 수 있습니다.