이 기사는 컴퓨터 과학의 두 가지 기본 데이터 구조 인 단독으로 이중 링크 된 목록을 탐구합니다. 종종 오해를받는 것은 이러한 구조물은 관련성있는 비유를 통해 가장 잘 이해됩니다 : 스 캐빈 저 사냥.
단일 연결된 목록 이해
단일 연결된 목록은 일련의 상호 연결된 노드입니다. 각 노드는 데이터와 시퀀스에서 다음 노드를 참조하는 포인터를 보유합니다. 이것은 청소부 사냥을 반영합니다. 각 단서 (노드)에는 메시지 (데이터)와 다음 단서로 이어지는 지침 (포인터)이 포함되어 있습니다. 전체 단서 시퀀스는 완전한 헌트를 형성합니다.
단일 연결된 목록 작업
우리는 Node
와 SinglyList
(또는 우리의 경우 DoublyList
) 생성자 모두에 대한 작업을 조사합니다.
_length
: 노드 수를 추적합니다.head
: 첫 번째 노드를 가리 킵니다.tail
: 마지막 노드를 가리 킵니다 (단일 연결된 목록과의 주요 차이).add(value)
: 새 노드를 추가합니다.searchNodeAt(position)
: 특정 인덱스에서 노드를 찾습니다.remove(position)
: 특정 인덱스에서 노드를 삭제합니다.이중 연결 목록 구현
JavaScript에서 DoublyList
구현합시다.
먼저, Node
생성자 :
클래스 노드 { 생성자 (값) { this.data = value; this.previous = null; // 이전 노드에 대한 포인터 this.next = null; // 다음 노드에 대한 포인터 } }
DoublyList
생성자 :
클래스 더블릴리스트 { 생성자 () { this._length = 0; this.head = null; this.tail = null; } }
이중 연결 목록 방법
다음은 양방향 트래버스를 위해 수정 된 add(value)
, searchNodeAt(position)
및 remove(position)
의 구현입니다.
add(value)
:
추가 (값) { const node = 새 노드 (값); if (this._length) { this.tail.next = 노드; node.previous = this. tail; this.tail = 노드; } 또 다른 { this.head = 노드; this.tail = 노드; } this._length; 리턴 노드; }
searchNodeAt(position)
: (단일 연결된 목록 버전과 동일)
searchNodeat (위치) { // ... (구현은 동일하게 유지됨) ... }
remove(position)
:
제거 (위치) { // ... (구현은 더 복잡하고 4 가지 사례를 처리합니다 : 유효하지 않은 위치, 헤드 제거, 꼬리 제거, 중간 노드 제거. 자세한 구현은 원본 기사를 참조하십시오.) ... }
결론
이 기사는 Scavenger Hunt 유추를 사용하여 단독으로 이중으로 연결된 목록에 대한 명확한 설명을 제공했습니다. 제공된 JavaScript 코드는 이중 연결 목록의 구현을 보여 주며, 단일 연결된 목록과 비교하여 주요 차이점과 복잡성을 강조합니다. 당신의 이해를 강화하기 위해 코드를 실험해야합니다.
위 내용은 JavaScript가있는 데이터 구조 : 단일 연결된 목록 및 이중 연결 목록의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!