원형연결리스트 예제

3) 원형 목록은 반복적으로 목록을 이동하는 응용 프로그램에 유용합니다. 예를 들어, 여러 응용 프로그램이 PC에서 실행되는 경우 운영 체제에서 실행 중인 응용 프로그램을 목록에 넣은 다음 순환하여 각 응용 프로그램을 실행한 다음 CPU가 CPU에 지정된 동안 대기하도록 하는 것이 일반적입니다. 다른 응용 프로그램. 운영 체제가 목록의 끝에 도달하면 목록의 맨 앞까지 순환할 수 있도록 운영 체제에서 순환 목록을 사용하는 것이 편리합니다. 우리는 뒤로 반복 할 수 없기 때문에, 효율적인 삽입전에 또는 제거하기 전에 작업이 불가능합니다. 특정 노드 앞에 목록에 삽입하려면 목록을 트래버스해야 하며, 이는 O(n)의 최악의 실행 시간이 있는 경우입니다. 반면 외부 저장소는 데이터 크기에 관계없이 연결된 목록에 동일한 데이터 구조와 기계 코드를 사용할 수 있다는 점에서 보다 일반적이라는 장점이 있습니다. 또한 연결된 여러 목록에 동일한 데이터를 쉽게 배치할 수 있습니다. 내부 저장소에서는 노드 데이터 구조에 여러 개의 다음 참조를 포함시켜 동일한 데이터를 여러 목록에 배치할 수 있지만 각 필드에 따라 셀을 추가하거나 삭제하기 위해 별도의 루틴을 만들어야 합니다. 외부 저장소를 사용하고 추가 링크된 목록의 셀이 데이터를 포함하는 연결된 목록의 노드에 대한 참조를 저장하도록 하여 내부 저장소를 사용하는 요소의 추가 링크된 목록을 만들 수 있습니다.

순환적으로 연결된 목록은 개별적으로 또는 이중으로 연결될 수 있습니다. 특히, 최종 센티넬 노드는 개별적으로 연결된 비순환 목록 간에 공유될 수 있습니다. 이러한 모든 목록에 동일한 최종 센티넬 노드를 사용할 수 있습니다. 예를 들어 Lisp에서 모든 적절한 목록은 nil 또는 (CDR 링크)로 표시된 특수 노드에 대한 링크로 끝납니다. 따라서 Lisp 절차는 모든 목록의 CAR 또는 CDR을 안전하게 취할 수 있습니다. 당신은 우리 둘 다 풀 타임 직업을 가지고 있기 때문에 집 청소기를 고용하면 우리의 청소 문제를 해결할 것이라고 말했다. 자, 무슨 일이 있었는지 보세요. 매주, 토스터 오븐을 청소 한 후, 우리 집 청소기는 플러그를 뽑지 않은 잎.

나는 집 청소기를 고용에 대해 당신에게 귀를 기울여서는 안된다. 순환적으로 연결된 목록은 다각형의 모서리, FIFO(“선입선”) 순서로 사용되고 해제되는 버퍼 풀 또는 시간 공유해야 하는 프로세스 집합과 같은 자연스럽게 원형배열을 나타내는 자연스러운 옵션일 수 있습니다. 라운드 로빈 순서. 이러한 응용 프로그램에서 모든 노드에 대한 포인터는 전체 목록에 대한 핸들 역할을 합니다.

Spread the love