C语言中链表内部的结构

C语言中链表内部的结构,c,data-structures,struct,linked-list,C,Data Structures,Struct,Linked List,我正在学习如何用C语言实现链表。我了解普通链表的基本知识,如何添加值,如何打印它们等等。但我一直在想,是否可以在链表中添加其他结构作为值?我的意思是: typedef struct personal_info { char *name; char *surname; int phone_number; } Info; typedef struct llist { Info *info; struct llist *next; } List; 当我这样做时,我如何访问信息结

我正在学习如何用C语言实现链表。我了解普通链表的基本知识,如何添加值,如何打印它们等等。但我一直在想,是否可以在链表中添加其他结构作为值?我的意思是:

typedef struct personal_info {
  char *name;
  char *surname;
  int phone_number;
} Info;

typedef struct llist {
  Info *info;
  struct llist *next;
} List;
当我这样做时,我如何访问信息结构的值

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;

您还需要为info结构分配内存:

l = malloc(sizeof(List));
l->info = malloc(sizeof(Info));

l->info->name = "name";
l->info->surname = "surname";
l->info->phone_number = 1234567890;
您还必须为结构调用malloc内存

还要记住,如果要实现从列表中删除节点的任何函数,则需要在释放节点之前释放该结构

您还必须为结构调用malloc内存


还要记住,如果要实现从列表中删除节点的任何函数,则需要在释放节点之前释放该结构。

是否为节点分配了内存?您需要为信息*分配内存的信息字段。是否为节点分配了内存?您需要为信息分配内存的信息字段*。谢谢!编译器给了我一个警告:警告:赋值使指针从整数变为不带cast的整数,并对字符串使用引号。撇号不正确。啊,我的错!又一个愚蠢的错误。凌晨2点编码不是个好主意非常感谢。编译器给了我一个警告:警告:赋值使指针从整数变为不带cast的整数,并对字符串使用引号。撇号不正确。啊,我的错!又一个愚蠢的错误。凌晨2点编码不是个好主意