더블링크드리스트 예제

다음으로, 우리는 다른 이중 링크 된 목록 관련 기능을 포함 하는 doublyLinkedList 클래스를 만들 필요가. 다음 코드 추가: 이중으로 연결된 목록을 반대로 하려면 기본적으로 다음 작업을 수행해야 합니다. 이 섹션에서는 그 중 일부를 검토합니다. 이 기사에서는 파이썬으로 이중으로 연결된 목록을 구현 할 수있는 방법을 보았습니다. 또한 이중으로 연결된 목록에서 작업을 삽입하고 삭제하는 다양한 방법을 보았습니다. 마지막으로 우리는 이중으로 연결된 목록을 되돌리는 방법을 연구했습니다. 마찬가지로 다음 스크립트는 이중 으로 연결된 목록의 끝에서 요소를 삭제합니다. 각 노드에는 두 개의 링크 필드(노드 시퀀스의 이전 및 다음 노드에 대한 참조)와 하나의 데이터 필드의 세 가지 필드가 포함됩니다. 시작 노드와 끝 노드의 이전 및 다음 링크는 각각 목록의 통과를 용이하게 하기 위해 일종의 종결자(일반적으로 센티넬 노드 또는 null)를 가리킵니다. 센티넬 노드가 하나만 있는 경우 목록은 센티넬 노드를 통해 순환적으로 연결됩니다. 동일한 데이터 항목에서 형성된 두 개의 개별적으로 연결된 목록으로 개념화할 수 있지만 순차적 순서와는 반대입니다.

많지는 않지만 이중으로 연결된 목록에는 아래에 나열 될 수있는 단점이 거의 없습니다 : 위의 다섯 단계의 네 단계는 개별적으로 연결된 목록의 전면에 삽입하는 데 사용되는 4 단계와 동일합니다. 유일한 추가 단계는 머리의 이전을 변경하는 것입니다. 여기서 알아차릴 수 있는 좋은 점은 singly 연결된 목록 구현에서 항목의 이전 노드를 반환하는 findPrevious 메서드를 작성해야 한다는 것입니다. 하지만 이번에는! 누적 목록, 활성 목록, 일시 중단 목록 및 선택 체인과 같은 일치 알고리즘에서 사용되는 여러 연결된 목록을 나타내는 동일한 헤드 변수 변수/frontier 변수 메서드를 사용했습니다. 이러한 목록 중 하나에 더해두는 모든 코드를 검토하고 모두 동일한 문제가 있는 7개의 장소를 찾습니다. 위의 코드에서 볼 수 있습니다. 항목 변수는 노드의 실제 데이터를 저장합니다. nref는 다음 노드에 대한 참조를 저장하고 pref는 이중으로 연결된 목록에 이전 노드에 대한 참조를 저장합니다. 위의 단계 단계 프로세스 중 5개는 지정된 노드를 개별적으로 연결된 목록에서 삽입하는 데 사용되는 5단계와 동일합니다. 새 노드의 이전 포인터와 새 노드의 다음 노드의 이전 포인터를 변경하려면 두 단계가 추가로 필요합니다. 이중 으로 연결된 목록은 중요한 데이터 구조 중 하나입니다. 이중 으로 연결된 목록의 다양한 장점은 다음과 같습니다.

예제 9.7의 정신으로 이중 으로 연결된 목록 기본 클래스에서 파생된 이중 끝 큐(deque) 추상화(“데크”로 발음)를 작성합니다. 아이콘에서 용어를 빌려, 당신의 방법을 넣어 이름 (꼬리에 추가), 얻을 (머리에 제거), 푸시 (머리에 추가), 당겨 (꼬리에서 제거).