2017-11-21 1 views
-2

문제가있는 경우 어떻게하면 더 나은지 분석 할 수 있습니까? 나는 각각 하나가 무엇인지 압니다. 그러나 언제 사용하지 않을 것인지, 사용하지 않을 것인지에 관해서는 차이를 알지 못합니다.단일 연결 목록 또는 접지 된 머리글 연결된 목록을 사용하는 방법을 알아야하는 방법

+0

'접지 된 머리글 연결된 목록'에 대한 검색이 좋은 링크를 찾지 못한 이유는 무엇입니까? –

+0

답을 따라 한 가지 추가 점을 추가하겠습니다. 당신의 접지 된 연결리스트는'head-> tail'을 통해서만 반복 될 수 있습니다. 마지막'-> next'는 항상'NULL'입니다. 두 번째 변형은 * 순환 링크 된 목록에 대해 논의했습니다. * 마지막으로'-> next '가'head'로 돌아가서 목록의 어느 노드에서든지'tail-> head'를 교차하는 노드로 돌아갈 수 있습니다. 원형 목록은 최종 자체 참조 노드를 테스트해야하므로 삽입 및 삭제에 대한주의가 필요합니다. 노드에서 반복 할 필요가없는 경우 기본 목록을 계속 사용하십시오. –

답변

2

대부분의 단일 연결 목록은 grounded header linked lists이며 목록의 마지막 요소는 '다음'포인터로 널 포인터를 갖습니다. 간혹 사람들은 순환 연결된 목록을 사용하지만 특수 용어가 필요한 특별한 경우입니다.

연결 목록에 루프가있을 수 있으므로 (반드시 첫 번째 노드까지는 아니더라도) 접지 된 연결 목록이 아니며 루프가 있음을 알 수있는 특별한 코드가 필요합니다. . 이러한 연결된 목록의 루프에 연결된 하나 또는 여러 개의 꼬리가있을 수 있습니다.

A D    E   B 
@--->@--->@--->@--->@<[email protected]<[email protected] 
    ^   | 
    |    v C 
    @<[email protected]<[email protected]<[email protected]<[email protected] 
    G    F 

A, B 및 C의 각

은 사이클 D에 끝나는 연결리스트의 시작, E, F는 G.는 그러나, 연결리스트는 비정상적이다 - 그들은 일반적으로 비정상적이고 바람직하지 않으며 대개 이러한 목록이 만들어지면 버그의 증상입니다.

다른 이유가없는 한 접지 된 연결 목록을 사용하십시오.

관련 문제