알고리즘 - 순환 및 이중 연결 목록

순환 목록이란 무엇입니까?

목록의 마지막 노드에서 링크 필드에는 끝을 나타내는 값인 null이 포함되어 있습니다. 순환 목록은 목록의 첫 번째 노드를 가리키는 것으로 구성됩니다. 개방 또는 선형 succ(tail)=head라고 합니다.


포인터에 의한 순환 목록의 정의


포인터 구동 원형 목록
포인터 기반 순환 목록

1) 목록 찾아보기

원형 목록 경로


프로시저 경로(L: ptr , p : ptr)
var pp:ptr
start
    pp := p
    반복
         프로세스(*pp.val)
         pp := *pp.link
    to (pp=p)
end

2) 삽입

머리에 삽입

순환 연결 목록 맨 위에 노드 삽입
리드 에 삽입

선두 주(lead) 외부의 통합

연결된 순환 목록 리드가 아닌 다른 곳에 삽입
상단 이외의 삽입


참조:
연결된 목록에 항목 삽입

3) 삭제

연결된 순환 목록에서 삭제


참조: 연결된 목록에서 항목 삭제.



장점과 단점

  • 이 코스에는 특별한 경우가 없습니다.
  • 삽입을 위한 세 가지 경우:
    • 맨 위(빈 목록).
    •  맨 위 (비어 있지 않은 목록).
    • 선두가 아닌 다른 곳에서.
  • 삭제에 대한 세 가지 경우;
    •  맨 위(단일 항목 목록)에 있습니다.
    •  맨 위(둘 이상의 항목이 있는 목록)
    • 선두가 아닌 다른 곳에서

링크에 의한 순환 목록의 정의




  • 경로는 해당 경로를 전송하는 현재 링크에서 만들어집니다.
  • 통합에는 특별한 경우가 없습니다.
  • 제거할 링크가 센티넬이 아닌지 확인해야 합니다.