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

您只需要在该列表的每个节点中保留另一个列表的头。你的结构定义类似于:

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个字符。

为什么要再列一个清单呢?管理指针将成为一件令人头痛的事情。你就不能直接做

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

相关内容

  • 没有找到相关文章

最新更新