我正在学习如何在C中实现链表。我了解普通链表的基本知识,如何添加值,如何打印值等。但我一直在想,是否可以在链表中添加其他结构作为值?我的意思是:
typedef struct personal_info {
char *name;
char *surname;
int phone_number;
} Info;
typedef struct llist {
Info *info;
struct llist *next;
} List;
当我这样做时,我如何访问Info
结构的值?
List *l;
l = malloc(sizeof(List));
l->info->name = 'name';
l->info->surname = 'surname';
l->info->phone_number = 1234567890;
代码崩溃了,所以我肯定做错了什么。你能给我一些如何做到这一点的建议吗?
您还需要为信息结构体分配内存:
l = malloc(sizeof(List));
l->info = malloc(sizeof(Info));
l->info->name = "name";
l->info->surname = "surname";
l->info->phone_number = 1234567890;
List *l;
l = malloc(sizeof(List));
l->info = malloc(sizeof(Info));
你必须为结构和分配malloc内存
还要记住,如果要实现从列表中删除节点的任何函数,则需要在释放节点之前释放该结构。