[javascript] 연결 리스트 (Linked List) 데이터 구조
연결 리스트는 데이터를 일렬로 연결한 데이터 구조입니다. 각 데이터 요소는 자신 다음에 오는 데이터 요소를 가리키는 포인터를 포함합니다. 이는 각 요소가 이전 요소와 다음 요소의 형식적인 연결을 갖게 됩니다.
연결 리스트는 다음과 같은 특징을 갖습니다:
- 크기를 미리 정하지 않아도 됩니다.
- 데이터 삽입과 삭제가 간단합니다.
- 메모리를 유연하게 사용할 수 있습니다.
연결 리스트의 종류
단일 연결 리스트 (Singly Linked List)
단일 연결 리스트는 각 요소가 다음 요소를 가리키는 포인터만을 갖고 있습니다. 이는 요소들을 한 방향으로만 탐색할 수 있게 합니다.
이중 연결 리스트 (Doubly Linked List)
이중 연결 리스트는 각 요소가 이전 요소와 다음 요소를 가리키는 두 개의 포인터를 갖고 있습니다. 이는 요소를 양방향으로 탐색할 수 있게 합니다.
원형 연결 리스트 (Circular Linked List)
원형 연결 리스트는 마지막 요소가 첫 번째 요소를 가리키는 방식으로 연결되어 있습니다.
예시 코드
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
class SinglyLinkedList {
constructor() {
this.head = null;
}
add(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
} else {
let current = this.head;
while (current.next) {
current = current.next;
}
current.next = newNode;
}
}
}
위의 예시 코드는 JavaScript로 작성된 간단한 단일 연결 리스트의 구현을 보여줍니다.
연결 리스트는 삽입과 삭제가 상대적으로 용이하며, 데이터의 크기를 미리 정하지 않아도 되는 유연한 구조를 갖고 있습니다.