Kotlin LinkedList

    [Kotlin] Kotlin의 LinkedList 내부 구현 알아보고 사용법 한 번에 정리하기

    Kotlin의 LinkedList 알아보기 Kotlin은 Java의 LinkedList를 사용하며 다음의 특징을 가진다. 1. 첫 노드와 마지막 노드에 대한 포인터를 가지고 있다. /** * Pointer to first node. */ transient Node first; /** * Pointer to last node. */ transient Node last; 2. 크기에 대한 정보를 가지고 있어서 크기에 접근하기 위한 시간 복잡도가 O(1)이다. transient int size = 0; 3. Node는 이전 노드와 다음 노드에 대한 참조를 모두 가진다. private static class Node { E item; Node next; Node prev; Node(Node prev, E ele..

    LinkedList란 무엇인가? 단일 연결 리스트, 양방향 연결 리스트 간단하게 구현해보기

    LinkedList란 무엇인가? LinkedList는 각 노드에서 단방향으로 포인터를 가진 단일 연결 리스트(Singly Linked List)와 양방향으로 포인터를 가진 양방향 연결 리스트(Doubly Linked List)로 나뉜다. 단일 연결 리스트 단일 연결 리스트(Singly Linked List)는 각 노드에서 다음 노드에 대한 참조를 가지고 있어 다음 노드로 이동할 수는 있지만 이전 노드로 이동할 수는 없는 리스트이다. 이 때문에 이전 노드와 다음 노드의 참조를 모두 가지는 Double Linked List에 비해 메모리 공간을 약간 덜 차지하는 장점이 있으며, 특정 노드 삭제를 위해 삭제할 노드의 이전 노드의 포인터를 다음 노드로 변경하면 되기 때문에 삭제가 매우 간단하다. 하지만 여러 단..

    [Kotlin Collection] Kotlin LinkedList를 이용한 Queue의 생성 및 활용 : add와 offer의 차이, remove와 poll, element와 peek의 차이 알아보기

    목표 Queue의 특징을 익힌다. Queue 인터페이스를 구현하는 클래스(LinkedList)의 사용법과 특징을 익힌다. 개요 Queue란 FIFO(First In First Out)의 특징을 갖는 자료 구조이다. 즉, 먼저 들어온 값이 먼저 나가는 자료구조이다. Kotlin에서는 Queue를 구현하기 위해 JCF(Java Collection Framework)에서 제공하는 Queue Interface를 이용한다. 하지만, Queue는 단순한 인터페이스이므로, 인터페이스를 구현하는 Class를 사용해야 하는데, 우리는 우리는 그중 LinkedList를 사용하여 Queue를 다루어본다. 생성 Queue 인터페이스를 이용하기 위해서는 인터페이스를 구현하는 구현체를 이용해야 한다. 그 중 대표적인 것이 Lin..