링크된 목록의 또 다른 단점은 참조에 필요한 추가 저장소로, 링크의 저장소 오버헤드가 두 배 이상 초과할 수 있기 때문에 문자 나 부울 값과 같은 작은 데이터 항목 목록에 대해 비실용적입니다. 데이터 크기입니다. 반대로 동적 배열에는 데이터 자체에 대한 공간만 필요하며 매우 적은 양의 제어 데이터만 필요합니다. 【주의 1】 또한 속도가 느릴 수 있으며, 순진한 할당자, 낭비, 각각의 새로운 요소에 대해 별도로 메모리를 할당하는, 문제는 일반적으로 메모리 풀을 사용하여 해결. 간단하게, 링크된 목록은 각 노드에 데이터 필드와 목록의 다음 노드에 대한 참조(link)가 포함된 노드로 구성됩니다. removeBeginning()은 목록에서 마지막 노드를 제거할 때 list.firstNode를 null로 설정합니다. 위의 예에서 ListHead는 목록의 첫 번째 항목의 위치인 2로 설정됩니다. 항목 3과 5에서 7은 목록의 일부가 아닙니다. 이러한 셀은 목록에 추가된 모든 데 사용할 수 있습니다.

ListFree 정수 변수를 만들어 사용 가능한 셀을 추적하기 위해 무료 목록을 만들 수 있습니다. 모든 항목이 사용 중인 경우 배열의 크기를 늘리거나 일부 요소를 삭제해야 새 항목을 목록에 저장할 수 있습니다. singly 연결된 선형 목록은 동일한 유형의 작은 개체에 대한 포인터를 포함하기 때문에 재귀 데이터 구조입니다. 이러한 이유로, 개별적으로 연결된 선형 목록(예: 두 개의 목록을 병합하거나 역순으로 요소를 나열)에 대한 많은 작업은 반복 명령을 사용하는 솔루션보다 훨씬 간단한 재귀 알고리즘을 가지는 경우가 많습니다. 이러한 재귀 솔루션은 이중 연결 및 순환 연결 목록에 맞게 조정할 수 있지만 절차는 일반적으로 추가 인수와 더 복잡한 기본 사례가 필요합니다. 이러한 이유로 이 방법은 주로 동적 메모리 할당을 지원하지 않는 언어에 사용됩니다. 이러한 단점은 배열을 만들 때 목록의 최대 크기를 알 수 있는 경우에도 완화됩니다. 순환적으로 연결된 목록은 다각형의 모서리, FIFO(“선입선”) 순서로 사용되고 해제되는 버퍼 풀 또는 시간 공유해야 하는 프로세스 집합과 같은 자연스럽게 원형배열을 나타내는 자연스러운 옵션일 수 있습니다.

라운드 로빈 순서. 이러한 응용 프로그램에서 모든 노드에 대한 포인터는 전체 목록에 대한 핸들 역할을 합니다. 데이터를 삽입하고 연결된 목록을 만드는 방법을 배우기 전에 연결된 목록을 구성하는 구성 요소를 이해해야 하며 주요 구성 요소는 Node입니다. 동적 배열과 연결된 목록을 사용하는 장단점을 강조하는 좋은 예는 Josephus 문제를 해결하는 프로그램을 구현하는 것입니다. 요세푸스 문제는 한 무리의 사람들이 원을 그리게 함으로써 작동하는 선거 방법입니다. 미리 정해진 사람부터 시작하여 원 n 번 을 계산합니다. 9번째 사람에게 도달하면, 그들을 원에서 꺼내서 회원들이 원을 닫게 한다. 그런 다음 같은 n 번 원을 세고 한 사람만 남을 때까지 과정을 반복합니다.

https://www.salvamovil.com/rnfl741e 그 사람은 선거에서 이긴다. 이것은 연결된 목록과 동적 배열의 강점과 약점을 보여 주며, 이는 사람들을 순환 링크 된 목록에서 연결된 노드로 보는 경우 연결된 목록이 노드를 얼마나 쉽게 삭제할 수 있는지 보여 주므로 (다른 링크에 대한 링크를 다시 정렬해야하기 때문에) 노드)를 제공합니다.