연결 리스트 || 링크드 리스트
· 약 5분
❤️🔥TIL : Today I Learned
연결 리스트
링크드 리스트라고 부르기도 하고, 연결 리스트라고 부르기도 합니다.
연결 리스트란?
- 연결리스트(Linked List)는 리스트의 항목들을 노드(node)에 저장하는 데이터 구조이다.
- 각 노드는 데이터 필드와 다른 노드의 주소를 포함하는 링크 필드로 구성된다.
- 연결 리스트를 사용하는 이점에는 쉬운 삽입 및 삭제 처리 기능, 크기 제한 없음, 비연속 메모리 공간 사용 기능 등이 있다.
- 그러나 구현이 까다롭고 번거로우며 오류가 발생하기 쉽다.
데이터 필드 : 리스트의 원소, 즉 데이터 값을 저장하는 곳
링크 필드 : 다른 노드의 주소값을 저장하는 장소(포인터)

Linked List에서 가장 앞 쪽 시작부분을 Head, 가장 마지막 부분을 Tail이라고 부른다.
연결리스트의 종류에는 단순 연결리스트, 원형 연결리스트, 이중 연결리스트가 존재한다. 단순 연결리스트는 가장 끝의 노드(Tail)는 항상 NULL을 가리키게 되며 원형 연결리스트는 NULL이 위치한 곳이 없다. 이중 연결리스트는 양 끝 노드(Head, Tail)가 NULL을 가리키게 된다.

단순(단일) 연결리스트 : 단순 연결리스트는 하나의 링크 필드를 이용하여 연결하며 마지막 노드의 링크 값은 NULL을 가리켜야 한다.

원형 연결리스트 : 원형 연결리스트에서 head 포인터는 마지막 노드를 가리키게 된다. 이러한 방식의 원형 리스트의 head는 마지막 노드를, head의 link는 첫 노드를 가리키므로 리스트의 처음이나 마지막에 노드를 삽입하는 연산이 편리하다.

이중 연결리스트 : 각 노드가 선행 노드와 후속 노드에 대한 링크를 가지는 리스트다. 노드의 왼쪽 링크(left link)와 오른쪽 링크(right link)가 각각 다른 노드의 오른쪽 링크와 왼쪽 링크를 연결짓고 있으며 특별하게 헤드도 노드로 이루어져 있다.
단순(단일) 연결 리스트 CODE
Node Class
// 노드 객체
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
Linked List 클래스
// 단일 연결 리스트 객체
class SinglyLinkedList {
constructor() {
this.head = null; // 초기값 head, tail = null, size = 0 초기화
this.tail = null;
this.size = 0;
}
}
