2014-04-09 3 views
-2

Q : 언제 사용됩니까? (숙제 질문) 목록에링크 된 목록의 더미 노드

  1. 첫번째와 마지막 노드

  2. 때때로 목록

  3. 에서 첫번째와 마지막 노드로 사용 목록에서 첫번째와 마지막 노드로 사용하지 마십시오

  4. 위키 백과는 말한다

,

sentinel 노드는 연결 된 목록 및 트리를 통과 경로 종결 자로 사용하는 특별히 지정된 노드입니다. 감시 노드 (sentinel node)는 이 데이터 구조에 의해 관리되는 데이터를 보유하거나 참조하지 않습니다.

나는 B를 생각하고있다. 그러나 나는 정말로 모른다.

+3

이, 가장 좋은 건 "때때로"입니다. 그리고이 경우에 올바른 것입니다. – keshlam

답변

1

"더미"노드와 "센티넬"노드 사이에 중요한 차이가 있습니다.

더미 노드 "때때로 노드의 첫 번째 노드와 마지막 노드로 사용됩니다".

링크 된 목록을 시작할 때 일반적인 방법은 더미 노드를 만드는 것이고 흥미롭게도 동시에 마지막 노드입니다. 분명히 LL의 첫 번째 노드 또는 마지막 노드가 더미 레코드이다.

데이터가없는 더미 노드와 널 포인터를 LL의 마지막 노드를 표시하는 센티널로 사용할 수 있습니다.

더미 노드없이 LL을 사용할 수 있는지 궁금할까요?
답변 : 예. 당신은 첫 번째 데이터 엔트리가 삽입 될 때까지 LL의 초기화를 유지할 수 있습니다. 그 시점까지는 LL로 널 포인터가 있고 삽입 후에 헤드 노드에 대한 포인터를 보유하고 항상 널 포인터를 "다음 "꼬리 노드의 노드.

자세한 통찰력을 얻으려면 this 페이지로 연결됩니다.

1

예, 응답은 2입니다. 가끔씩 목록의 첫 번째 노드와 마지막 노드로 사용됩니다.

이 질문에 답하려면 더미 노드의 필요성과 사용을 이해해야합니다. 링크 목록 문제에 대한 도움으로이를 설명 할 것입니다.

단일 링크 목록에 노드를 삭제하면 그 노드에 대한 포인터 만 제공됩니다. 어떻게 삭제합니까 ?? 답변 : HEAD 노드가있는 경우 해당 노드를 찾아 삭제할 때까지 순회 할 수 있지만 마지막 노드가 NULL을 가리키고 있기 때문에 마지막 노드의 포인터가 있으면 작동하지 않습니다. 여기에 DUMMY 노드가 필요합니다. 나중에 삭제 노드의 새 노드를 만드는 데 도움이되는 빈 노드입니다.

이중 링크 목록의 경우이 문제는 어느 방향 으로든 발생할 수 있습니다. 더미 노드의 정의 : 목록의 앞/끝에있는 더미 노드로, 연결된 목록 작업에서 특수 사례 코드의 필요성을 줄입니다. 나중에 새 노드를 작성하기위한 빈 템플릿입니다. 여기서 문제는 어떤 헤드 노드도 없다는 것입니다.우리는 타겟 노드에 대해서만 포인터를 가진다.

해결 방법은 다음 노드에서 다음 노드로 데이터를 복사하고 다음 노드를 삭제하고 삭제할 대상을 지정합니다.

하지만 마지막 노드가 NULL을 가리키고 있기 때문에 마지막 노드의 포인터가 있으면이 작업이 수행되지 않습니다. 여기에 DUMMY 노드가 필요합니다. 나중에 삭제 노드의 새 노드를 만드는 데 도움이되는 빈 노드입니다.

이중 링크 목록의 경우이 문제는 어느 방향 으로든 발생할 수 있습니다.

더미 노드의 정의 : 링크 된 목록 작업에서 특수 사례 코드의 필요성을 줄이기 위해 목록의 앞/끝에있는 더미 노드. 나중에 새 노드를 작성하기위한 빈 템플릿입니다.

참조 :에 "항상/때로는/결코"선택 주어진 http://pages.cs.wisc.edu/~vernon/cs367/notes/4.LINKED-LIST.html 순수 테스트 촬영 기술에