[kotlin] 코틀린으로 이중 링크드 리스트 알고리즘 작성하기
이중 링크드 리스트는 각 노드가 두 개의 링크, 즉 앞쪽 노드를 참조하는 링크와 뒤쪽 노드를 참조하는 링크를 가지고 있는 자료구조입니다. 이중 링크드 리스트는 모든 노드에 대한 양방향 액세스를 제공하여 삽입, 삭제 및 탐색 작업을 효율적으로 수행할 수 있습니다. 코틀린으로 이중 링크드 리스트를 구현하는 방법에 대해 알아봅시다.
이중 링크드 리스트 노드 구현하기
이중 링크드 리스트의 각 노드는 데이터 요소와 앞쪽 노드와 뒤쪽 노드를 참조하기 위한 링크를 가지고 있어야 합니다. 코틀린으로 이를 구현하는 간단한 방법은 다음과 같습니다.
class Node<T>(
var data: T,
var prev: Node<T>? = null,
var next: Node<T>? = null
)
위 코드에서 Node
클래스는 데이터 요소와 앞쪽 노드와 뒤쪽 노드를 참조하기 위한 prev
와 next
링크를 가지고 있습니다.
이중 링크드 리스트 구현하기
이제 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 프로젝트를 확인해보십시오.