위 사진과 같이, 노드들이 서로 연결되어있는 자료구조입니다.
참고
(사진 출처: GeeksforGeeks)
const myLinkedList = new SingleLinkedList();
myLinkedList.append(1);
myLinkedList.append(2);
myLinkedList.append(3);
myLinkedList.append(5);
myLinkedList.display();
//
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 3 │
│ 3 │ 5 │
└─────────┴────────┘
console.log(myLinkedList.find(3));
// Node { value: 3, next: Node { value: 5, next: null } }
myLinkedList.remove(3);
myLinkedList.display();
//
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 5 │
└─────────┴────────┘
myLinkedList.insert(myLinkedList.find(2), 10);
myLinkedList.display();
//
┌─────────┬────────┐
│ (index) │ Values │
├─────────┼────────┤
│ 0 │ 1 │
│ 1 │ 2 │
│ 2 │ 10 │
│ 3 │ 5 │
└─────────┴────────┘
항상 console.log()
만 사용했는데, console.error()
, console.table()
등이 있다는 사실을 알게되었다.
프로퍼티인 _size와 메서드인 size, 모두 같은 이름인 size로 하면 안되는 것을 알게되었다.
_size
와 size()
메서드를 모두 size
로 이름을 변경하면, size()
메서드를 호출할 때 this.size
가 size()
메서드를 가리키게 된다. 이는 size()
메서드를 무한히 재귀적으로 호출하게 되어 스택 오버플로우 에러가 발생한다.
console.log()는 값을 출력 후, undefined를 리턴
하는 것을 알게되었다.