>웹 프론트엔드 >JS 튜토리얼 >JavaScript가있는 데이터 구조 : 단일 연결된 목록 및 이중 연결 목록

JavaScript가있는 데이터 구조 : 단일 연결된 목록 및 이중 연결 목록

Lisa Kudrow
Lisa Kudrow원래의
2025-03-13 12:52:11351검색

JavaScript가있는 데이터 구조 : 단일 연결된 목록 및 이중 연결 목록

이 기사는 컴퓨터 과학의 두 가지 기본 데이터 구조 인 단독으로 이중 링크 된 목록을 탐구합니다. 종종 오해를받는 것은 이러한 구조물은 관련성있는 비유를 통해 가장 잘 이해됩니다 : 스 캐빈 저 사냥.

단일 연결된 목록 이해

단일 연결된 목록은 일련의 상호 연결된 노드입니다. 각 노드는 데이터와 시퀀스에서 다음 노드를 참조하는 포인터를 보유합니다. 이것은 청소부 사냥을 반영합니다. 각 단서 (노드)에는 메시지 (데이터)와 다음 단서로 이어지는 지침 (포인터)이 포함되어 있습니다. 전체 단서 시퀀스는 완전한 헌트를 형성합니다.

단일 연결된 목록 작업

우리는 NodeSinglyList (또는 우리의 경우 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.