2014-10-08 2 views
0

구조의 첫 번째 항목이 다른 항목과 다른 유형의 링크 된 목록을 정의하려고합니다. 이 첫 번째 노드는 항상 존재합니다.다른 구조 유형으로 연결된 목록 만들기

Type1 -> Type2_1 -> Type2_2 -> Type2_3->etc 

Type2 요소를 재 배열 할 수 있어야합니다. 예를 들어 다음을 가질 수 있습니다.

Type1 -> Type2_3 -> Type2_1 -> Type2_2 -> etc 

나는 이중 연결 목록을 정의합니다. 각 Type2 요소는 다음 Type2와 이전 Type1을 가리킬 수 있으며 필요하면 Type1이 될 수 있습니다. Type2 요소가 Type1 옆에 있으면 이전 Type2에 대한 포인터가 NULL로 설정됩니다.

typedef struct Type2{ 
     struct Type2 *next; 
     struct Type2 *previous; 
     int isNextToType1; 
    } Type2; 

더 좋은 방법이 있습니까?

+2

이전 포인터가 NULL로 설정되어 있으면'isNextToType1' 멤버는 무엇이 필요합니까? 'NULL''''' 포인터를 확인하십시오. – Drax

+0

@Drax는 대답이어야합니다. –

+0

이 데이터를 Type2s의 연결된 목록을 포함하는 구조 (Type1)로 특성화하는 것이 좋습니다. 그렇게 생각하면보다 효과적인 방향으로 안내 할 수 있습니다. –

답변

2
typedef struct Type2 
{ 
    ... 
    struct Type2 *previous; // This is NULL for the first element 
    struct Type2 *next; // This is NULL for the last element 
} Type2; 

typedef struct Type1 
{ 
    ... 
    struct Type2* list; // This might be NULL if the list is empty 
} Type1; 

너는 이보다 더 필요한 것 같지 않습니다.

관련 문제