[kotlin] 선형 자료 구조와 비선형 자료 구조의 차이점

자료 구조는 프로그래밍에서 가장 기본적이고 중요한 개념 중 하나입니다. 자료 구조는 데이터를 구성하고 조직화하는 방법을 의미하며, 선형 자료 구조와 비선형 자료 구조는 두 가지 주요 범주로 나뉩니다.

선형 자료 구조

선형 자료 구조는 데이터가 선형으로(즉, 일렬로) 나열되는 구조를 말합니다. 대표적인 선형 자료 구조로는 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue) 등이 있습니다.

배열(Array)

배열은 동일한 데이터 유형의 요소들이 메모리에 연이어 저장되는 자료 구조입니다. 배열의 각 요소는 인덱스를 사용하여 접근할 수 있습니다.

val numbers = arrayOf(1, 2, 3, 4, 5)
println(numbers[2]) // 3

연결 리스트(Linked List)

연결 리스트는 각 요소가 다음 요소를 가리키는 방식으로 구성되는 자료 구조입니다. 각 요소는 데이터와 다음 요소를 가리키는 링크로 이루어져 있습니다.

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

val node1 = Node(1)
val node2 = Node(2)
node1.next = node2

비선형 자료 구조

비선형 자료 구조는 데이터가 계층적인 관계나 링크로 연결되는 구조를 말합니다. 대표적인 비선형 자료 구조로는 트리(Tree), 그래프(Graph) 등이 있습니다.

트리(Tree)

트리는 노드와 간선을 이용하여 계층적인 구조를 표현하는 자료 구조입니다. 각 노드는 하나의 부모 노드와 여러 개의 자식 노드를 가질 수 있습니다.

class TreeNode(var value: Int, var left: TreeNode? = null, var right: TreeNode? = null)

val rootNode = TreeNode(1)
val leftNode = TreeNode(2)
rootNode.left = leftNode

그래프(Graph)

그래프는 정점(Vertex)과 간선(Edge)으로 표현되는 자료 구조로, 노드들 간의 관계를 표현할 수 있습니다.

val graph = mapOf(
    "A" to listOf("B", "C"),
    "B" to listOf("A", "C"),
    "C" to listOf("A", "B")
)

결론

선형 자료 구조와 비선형 자료 구조는 데이터의 조직화 방식에 있어서 중요한 차이를 가지고 있습니다. 선형 자료 구조는 데이터가 일렬로 구성되어 있으며, 비선형 자료 구조는 데이터가 계층적인 구조를 가지고 있습니다. 프로그램을 설계할 때, 이러한 차이를 고려하여 적합한 자료 구조를 선택하는 것이 중요합니다.

참고 문헌: