【问题标题】:Structures inside linked lists in CC中链表内的结构
【发布时间】:2011-08-31 00:19:51
【问题描述】:

我正在学习如何在 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;

代码崩溃了,所以我肯定做错了什么。您能给我一些提示如何实现吗?

【问题讨论】:

  • 您是否为节点分配了内存? (信息字段)
  • 您需要为 Info* 分配内存。

标签: c data-structures struct linked-list


【解决方案1】:

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

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

l->info->name = "name";
l->info->surname = "surname";
l->info->phone_number = 1234567890;

【讨论】:

  • 谢谢!编译器给了我警告:warning: assignment makes pointer from integer without a cast
  • 对字符串使用引号 (")。撇号不正确
  • 啊,我的错!另一个愚蠢的错误。在凌晨 2 点编码不是一个好主意。 :)
【解决方案2】:
List *l;
l = malloc(sizeof(List));
l->info = malloc(sizeof(Info));

你还必须为结构分配内存

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2019-05-02
    • 2014-11-29
    • 1970-01-01
    • 2017-03-21
    • 2021-05-11
    相关资源
    最近更新 更多