2013-02-28 4 views
1

기본 목록을 만들고 각 기본 목록 요소에 다른 목록이 있습니다. 여기연결된 목록 내에서 연결된 목록을 만드는 방법

내가

typedef struct smallList 
    { char data; 
     struct smallList *next; 

    } small; 

    typedef struct bigList 
    { 
     int count; 
     char data; 
     struct bigList *next; 
     struct smallList *head; 
    } big; 

을 한 일이지만, 어떻게 큰 목록에서 작은 목록 데이터에 액세스하고 작은 목록에 물건을 추가 할. 도움을 주시면 감사하겠습니다. 우리는이 구조가 이미 채워져 있다고 가정하면 감사 ....

+7

안녕하세요, 당신은 연결 목록이 좋다고 들었습니다. 그래서 우리는 다른 연결된 목록을 반복하면서 링크 된 목록을 즐길 수 있도록 연결된 목록 내부에 연결된 목록을 만들었습니다. –

+0

어제의 질문과 같습니다 (http://stackoverflow.com/questions/15094665/inserting-a-word-in-a-doubly-linked-list-and-checking-incrementing-frequency#comment21238487_15094665) 포스터 각 항목이 클래스 할당을 위해 다른 링크 된 목록을 보유하고있는 링크 된 목록을 작성해야했습니다. 그 당시 답변을 게시하지 않았다. – StarPilot

답변

2

그래서, 우리가 할 수있는 :

struct smallList *smallElem = NULL; 
struct bigList *bigElem = NULL; 

for (bigElem = your_big_list(); bigElem != NULL; bigElem = bigElem->next) { 
    // Do something with bigElem. 

    for (smallElem = bigElem->head; smallElem != NULL; smallElem = smallElem->next) { 
     // Do something with the smallElem. 
     // Note that we can still reference bigElem here as well. 
    } 
} 
+0

도움에 감사드립니다. "your_big_list()"는 큰 목록의 첫 번째 요소 (또는 요소)의 주소를 반환합니다. – user1476263

+0

@ user1476263 : 목록의 첫 번째 요소와 함께 사용하는 것이 좋지만 목록 끝에있는 모든 요소에서 반복됩니다. –

1

p하면 포인트를 bigList에 :

  • bigList -> head가 작은 목록입니다 그 bigList 가리 킵니다.
  • (bigList -> head).data은 smallList에 들어있는 문자입니다.
  • (bigList -> next -> head)은 bigList의 두 번째 smallList입니다.
  • (bigList > head -> next)은 bigList의 첫 번째 smallList의 두 번째 요소입니다.

수정하려는 구조체에 대한 포인터를 얻은 후에는 그 밖의 모든 것이 동일합니다.

관련 문제