2013-05-21 5 views
0

c를 사용하여 단일 목록에 하위 목록을 만들고 싶습니다. 이름, 성, 전화 번호, 이메일 주소가있는 목록이 있습니다 .... 더 많은 전화를 유지하기 위해 전화로 하위 목록을 만들고 싶습니다. 이 내 구조체입니다 : c의 연결된 목록의 하위 목록?

typedef struct ph{ 
    char * phone; 
    ph *next; 
}listofphones; 

typedef struct client{ 
    char* name; 
    char* surname; 
    date birthday; 
    char bankaccount[16]; 
    listofphone phone; 
    char* mail; 
    struct client *next; 
} clientData;  

내가 모든 클라이언트에 대한 별도의 하위 목록을 원한다. 문제는 전화가 모두 같은 목록에 있다는 것입니다. 그렇다면 어떻게 다른 목록을 만들 수 있습니까?

예 : (. 내가 충분히 분명 희망 나쁜 도면 죄송합니다)

name1->surname1->birthday1->bankaccount1->phone1->mail1....... 
              | 
              phone2 
              | 
              phone3 
              . 
              .              
              . 

+0

귀하의 질문에 명확하지 않습니다. 고객, 전화 및 전화 목록을 구성하는 방법에 대한 그림을 그릴 수 있습니까? – jxh

+4

현재 코드에는 이미 클라이언트마다 목록이 있습니다. 나는 아직도이 문제를 이해하지 못하는가? – Joel

+0

'listofphones' (나쁜 이름, btw ... 아마도'clientPhone'이 더 좋습니까?) 이미'next' 포인터가 있습니다. 그래서 첫 번째 전화 번호가'clientData-> phone'에 추가되고,'listofphones.next' (그리고'next' 포인터)를 통해 추가 전화 번호가 묶일 것입니다. –

답변

0

왜 다른 목록을 만들고 싶어합니까? 포인터 관리는 두통이 될 것입니다. 단순히 할 수 없습니까

+0

어, 왜 10 개의 정수로 된 10 개의 배열이 필요합니까? –

+0

@NikBougalis 편집 – noMAD

+0

괜찮 았지만 여전히 각각 10 개의 정수로 구성된 10 개의 배열이 있습니다. 왜? –

1

이 목록의 모든 노드에는 다른 목록의 헤드 만 유지해야합니다. 구조 정의는 다음과 같습니다.

typedef struct ph{ 
    char * phone; 
    ph *next; 
}listofphones; 

typedef struct client{ 
    char* name; 
    char* surname; 
    date birthday; 
    char bankaccount[16]; 
    ph* phHead; 
    char* mail; 
    struct client *next; 
} clientData; 

이제 목록 안에 목록이 있습니다. 그러나 클라이언트의 전화 번호를 트래버스, 찾기, 열거하는 코드 작성에는 두 번 포인터를 사용해야합니다. 당신이 고객의 전화 번호의 유한 번호가있는 경우, 당신은 같은으로 변경할 수 있습니다 :

typedef struct client{ 
    char* name; 
    char* surname; 
    date birthday; 
    char bankaccount[16]; 
    char phNumbers[5][10]; 
    char* mail; 
    struct client *next; 
} clientData; 

구조체의 위의 정의는 클라이언트 당 5 개 전화 번호의 최대 모든 전화 번호가있을 것으로 가정 최대 10 자입니다. 필요에 맞게 변경할 수 있습니다.