c++ 더블 링크드 리스트 예제

단계 이 지정된 노드에 대한 포인터를 next_node이고 새 노드의 데이터를 new_data로 추가할 수 있도록 합니다. 언제나 처럼, 여기 소스 코드입니다. 위에서 제공 한 과제에 구현 의 일부를 추가했습니다 (전부는 아님). 이중으로 연결된 목록이 어떻게 작동하는지 이해한다면 구현을 시작하고 실행할 때까지는 시간 문제일 뿐입니다. 현재 포인터cur가 다음 노드로 이동하지 않으므로 코드는 이 경우를 나타냅니다. 따라서 현재 포인터는 목록의 헤드에 남아 있습니다( 예 : cur == head i)는 인덱스에 의한 삽입 /제거와 같은 전술 한 기능을 추가하여 이중으로 연결된 목록을 가지고 놀것을 권장합니다. 소스 코드에서 참조를 위해 이러한 기능을 추가했습니다. 머리가 없습니다. 꼬리가 없습니다. 노드를 만들고 머리및 꼬리를 생성된 노드를 가리키도록 설정합니다. 1.

노드 사이에 삽입. 2. 처음에 삽입. 3. 빈 목록에 삽입합니다. 4. 목록 의 끝에 삽입. 사례 2: 들어오는 노드가 목록 앞에 있습니다. 연결된 목록을 반전하면 목록과 오름차순 속성이 내림차순이 되고 그 반대의 경우도 마찬가지입니다. 그래서 다양한 프로세스의 순서 : 목록의 머리에서 인쇄하는 경우, 다음에 오는 노드가 있도록 머리 앞에 노드가 있어야합니다. 다음은 인덱스를 기반으로 데이터를 삽입하는 중간 삽입에 대한 의사 코드입니다.

이 구현에서는 간단히 하기 위해 연결된 목록(헤드)의 시작부터 데이터를 삽입할 원하는 인덱스에 도달할 때까지 반복작업을 시작합니다. 마지막 요소를 제거하는 경우 이것이 마지막 요소인지 확인해야 합니다. 우리의 구현에서 꼬리는 머리와 같을 수 없습니다. 따라서 헤드 노드가 null과 같지 않지만 꼬리가 null이면 마지막 요소를 제거합니다. 노드를 이중으로 연결된 목록에 삽입할 때 이제 하나 대신 두 개의 포인터에 대해 걱정해야 합니다. 노드가 함께 연결되는 방법의 기본을 이해하는 한, 이것은 너무 어렵지 않아야합니다. 연결된 목록에 기능을 세심하게 추가하면 개발자가 코드를 사용하여 데이터를 제어하는 방법을 더 잘 이해할 수 있습니다.