순환 이중 연결 목록 및 꼬리 포인터 이중 연결 목록

호치민

원형 포인터와 꼬리 포인터를 사용하여 이중 연결 목록을 만드는 장점 / 단점은 무엇입니까? 데크를 만드는 데 어느 것이 선호됩니까?

제 생각에는 노드 검색, 삽입 및 삭제를 모두 수행하는 데 거의 동일합니다. 유일한 차이점은 꼬리 포인터 이중 연결 목록의 경우 꼬리 포인터가 마지막 노드를 가리켜 야하고 꼬리 뒤에 새 노드를 삽입 할 때마다 업데이트해야한다는 것입니다. 또한 순환 연결 목록에서는 첫 번째 노드가 마지막 노드에 연결되고 그 반대의 경우도 마찬가지이며 꼬리 포인터에는 head-> prev 및 tail-> 모두가 널 포인터를 가리 킵니다. 나는 둘 다 데크를 만드는 데 훌륭하다고 생각합니다. 모든 것이 정확히 당신이 원하는 프로그램 실행 방식에 달려 있습니다. 프로그램이 헤드와 테일 노드 사이에서 빠르게 앞뒤로 실행되도록하려면 순환 방식을 사용하십시오. 그렇지 않으면 꼬리 포인터로 충분합니다.

그것이 질문에 대한 나의 대답입니다. 아직 순환 이중 연결 목록을 만들지 않았기 때문에 컴퓨터에서 실행되는 방법에 대한 경험이 없지만 꼬리 포인터만큼 빠를 것이라고 생각합니다. 어떤 제안이라도? 그리고 그들의 의견에 감사드립니다.

토마스여

순환 이중 연결 목록은 시작 또는 끝에서 효율적으로 추가 / 제거 할 수 있고 단순하고 균일 한 데이터 구조를 사용하기 때문에 선호됩니다.

순환 dbl 연결 목록을 구현하는 가장 쉬운 방법은 다른 모든 노드와 동일한 유형의 'head'노드를 보유하지만 항상 'null'항목 / 값을 가지며 다음 / 이전 포인터를 보유하는 데만 사용하는 것입니다. 실제 "항목 노드".

목록이 비어 있으면 head.next 및 head.prev가 모두 자신을 가리 킵니다.

논리는 'head'와 'tail'이 비어있을 때 null이되도록 허용하는 tail-pointer 변형과 달리 순환 dbl 연결 목록의 경우 더 간단합니다. 수정 작업에서 잠재적으로 업데이트되는 'head'및 'tail'포인터가 모두 필요하므로 로직이 더 복잡해집니다.

이름 지정은 여기서 약간 불분명합니다. 저는 head'목록 노드'를 언급 하곤 했지만 '목록'또는 '노드'라고 부를 수 있습니다.

head.next -> first -> second -> ...
head.last -> last -> second-last -> ...

목록이 비어있는 경우 :

head.next -> head
head.last -> head

목록에 항목이 하나있는 경우 :

head.next -> item -> head
head.last -> item -> head

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이중 연결 목록 포인터의 이중 연결 목록 벡터

분류에서Dev

머리와 연결된 순환 이중 연결 목록에서 삭제

분류에서Dev

이중 연결 목록-병합 정렬 후 목록 업데이트-> 꼬리

분류에서Dev

연결된 목록 및 목록에 대한 포인터의 중복 직렬화

분류에서Dev

순차 이진 트리 순회 중 목록 연결 방지

분류에서Dev

이중 연결 목록-C

분류에서Dev

이중 연결 목록 인쇄

분류에서Dev

C의 이중 연결 목록 (인쇄)

분류에서Dev

C의 이중 연결 목록 (인쇄)

분류에서Dev

연결 목록의 포인터 이해

분류에서Dev

addFirst (E e) 이중 연결 목록 (Null 포인터 예외)

분류에서Dev

OCaml에서 순환 이중 연결 목록 구현

분류에서Dev

이중 연결 목록-메모리에서 목록 삭제

분류에서Dev

순환 연결 목록을 사용하여 이름 인쇄

분류에서Dev

이중 연결 목록에 숨겨진 이진 트리 (Microsoft 인터뷰)

분류에서Dev

연결된 목록에서 이중 포인터를 사용하는 목적

분류에서Dev

이중 연결 목록 반전-가비지 데이터 인쇄

분류에서Dev

C # 이중 연결 목록-이전 및 다음 연결되지 않음

분류에서Dev

이중 연결 목록이있는 QuickSort

분류에서Dev

이중 연결 목록이 "목록이 비어 있음"을 반환합니다.

분류에서Dev

이중 연결 목록 구현 및 반복 코드 재사용

분류에서Dev

꼬리 포인터가없는 단일 연결 목록에 대한 extractLessThan 연산

분류에서Dev

c의 이중 순환 연결 목록의 시작 부분에 노드 추가

분류에서Dev

순환 이중 연결 목록에 요소를 삽입 할 수 없습니다.

분류에서Dev

이중 연결 목록 해제

분류에서Dev

이중 연결 목록 초기화

분류에서Dev

C의 이중 연결 목록

분류에서Dev

이중 연결 목록 빈 상황

분류에서Dev

이중 연결 목록 추가 요소

Related 관련 기사

  1. 1

    이중 연결 목록 포인터의 이중 연결 목록 벡터

  2. 2

    머리와 연결된 순환 이중 연결 목록에서 삭제

  3. 3

    이중 연결 목록-병합 정렬 후 목록 업데이트-> 꼬리

  4. 4

    연결된 목록 및 목록에 대한 포인터의 중복 직렬화

  5. 5

    순차 이진 트리 순회 중 목록 연결 방지

  6. 6

    이중 연결 목록-C

  7. 7

    이중 연결 목록 인쇄

  8. 8

    C의 이중 연결 목록 (인쇄)

  9. 9

    C의 이중 연결 목록 (인쇄)

  10. 10

    연결 목록의 포인터 이해

  11. 11

    addFirst (E e) 이중 연결 목록 (Null 포인터 예외)

  12. 12

    OCaml에서 순환 이중 연결 목록 구현

  13. 13

    이중 연결 목록-메모리에서 목록 삭제

  14. 14

    순환 연결 목록을 사용하여 이름 인쇄

  15. 15

    이중 연결 목록에 숨겨진 이진 트리 (Microsoft 인터뷰)

  16. 16

    연결된 목록에서 이중 포인터를 사용하는 목적

  17. 17

    이중 연결 목록 반전-가비지 데이터 인쇄

  18. 18

    C # 이중 연결 목록-이전 및 다음 연결되지 않음

  19. 19

    이중 연결 목록이있는 QuickSort

  20. 20

    이중 연결 목록이 "목록이 비어 있음"을 반환합니다.

  21. 21

    이중 연결 목록 구현 및 반복 코드 재사용

  22. 22

    꼬리 포인터가없는 단일 연결 목록에 대한 extractLessThan 연산

  23. 23

    c의 이중 순환 연결 목록의 시작 부분에 노드 추가

  24. 24

    순환 이중 연결 목록에 요소를 삽입 할 수 없습니다.

  25. 25

    이중 연결 목록 해제

  26. 26

    이중 연결 목록 초기화

  27. 27

    C의 이중 연결 목록

  28. 28

    이중 연결 목록 빈 상황

  29. 29

    이중 연결 목록 추가 요소

뜨겁다태그

보관