자료구조

LinkedList

개발정리 2021. 9. 10. 12:20

LinkedList 란?


 

LinkedList에 대한 설명은 이전에 정리해놓은 글을 참고하자.

https://hyokeun0419.tistory.com/25?category=888578

 

[자료구조] ArrayList & LinkedList

ArrayList 란? ㄴ 데이터를 추가하는데로 사이즈가 늘어나는 자료구조 ㄴ 기본적으로 자바에서 제공되는 Array 의 경우에는 객체 생성시 배열의 크기를 지정해주어야한다. ㄴ ArrayList 를 이용하면 데

hyokeun0419.tistory.com

 

 

 

LinkedList 구현


header 가 삭제되었음에도 이 후 노드들이 계속해서 header 의 주소값을 가지고 있으면 안된다. 

이 문제를 쉽게 해결하기 위해 LinkedList 클래스 안에서 Node 클래스를 구현하고 header 를 데이터가 아닌 LinkedList 의 시작을 알려주는 용도로 구현하였다.

class LinkedList {
    Node header;

    static class Node {
        int data;
        Node next = null;
    }

    LinkedList() {
        header = new Node();
    }

    void append (int d) {
        Node end = new Node();
        end.data = d;
        // 여기서 header는 관리용도로만 쓰이고 있다. (데이터가 없음)
        Node n = header;
        while (n.next != null) {
            n = n.next;
        }
        n.next = end;
    }

    void delete (int d) {
        // 여기서 header 관리용도로만 쓰이고 있다. (데이터가 없음)
        Node n = header;
        while (n.next != null) {
            if (n.next.data == d) {
                n.next = n.next.next;
            } else {
                n = n.next;
            }
        }
    }

    void retrieve() {
        // header는 관리용도로만 쓰이고 있기 때문에 헤더 다음부터 데이터를 꺼내온다.
        Node n = header.next;
        while (n.next != null) {
            System.out.print(n.data + " -> ");
            n = n.next;
        }
        System.out.println(n.data);
    }
}

public class Main {
    public static void main(String[] args) {
        LinkedList ll = new LinkedList();
        ll.append(1);
        ll.append(2);
        ll.append(3);
        ll.append(4);
        ll.append(5);
        ll.retrieve();

        ll.delete(1);
        ll.retrieve();
    }
}

 

 

 

참고자료


https://www.youtube.com/watch?v=DzGnME1jIwY&list=PLjSkJdbr_gFZQp0KEoo0Y4KkCI5YqxtjZ 

http://www.yes24.com/Product/Goods/44305533

'자료구조' 카테고리의 다른 글

그래프(Graph) 설명과 DFS, BFS 구현  (0) 2021.10.30
트리(Tree) 설명과 구현  (0) 2021.10.30
ArrayList & LinkedList 설명과 비교  (0) 2021.08.21
HashTable  (0) 2021.08.21