0

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 
                                            .
                                            .                                                     
                                            .

(下手な絵でごめんなさい。十分に明確であることを願っています。)

4

2 に答える 2

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;  

上記の struct の定義では、クライアントごとに最大 5 つの電話番号があり、すべての電話番号が最大 10 文字であると想定しています。これは必要に応じて変更できます。

于 2013-05-21T19:45:16.270 に答える
0

なぜ別のリストを作りたいのですか?ポインターの管理は頭痛の種になります。単純にできませんか

typedef struct client{
char* name;
char* surname;
date birthday;
char bankaccount[16];
int **phone;
char* mail;
struct client *next;
} clientData;
于 2013-05-21T19:34:08.327 に答える