【问题标题】:nested structs/linked lists in cc中的嵌套结构/链表
【发布时间】:2016-04-23 19:12:13
【问题描述】:

我的问题是如何访问列表结构的节点结构中的 num 变量?我尝试了两种方法,它们都没有工作?我只是好奇为什么会这样。感谢任何帮助我知道这是一个新手问题的人。我对 c 和堆栈溢出相当陌生,希望我能从这个网站学到很多东西。

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
    int num;
    struct node *next;
} node;

typedef struct list
{
    node *ptr;
    struct list *next;
} list;

int main()
{
    list *p = malloc(sizeof(list));
    //p->ptr->num = 5;

    node *x;
    x = p->ptr;
    //x->num = 5;   

    return 0;
}

【问题讨论】:

  • 在添加节点之前,列表不包含任何指向节点的指针。您需要为x 分配一个node 以指向该节点,然后将p 设置为指向该节点。只有这样您才能开始访问该值。因此,p-&gt;ptr = x; 比反向分配更合理,但您仍然需要连接所有点。

标签: c struct linked-list


【解决方案1】:

您尝试做的是正确的,但问题是尽管您已为 list 分配内存,但没有为位于 list 内的 node 分配内存。

    list *p = malloc(sizeof(list));
    //p->ptr->num = 5;
    node *x;
    p->ptr = malloc(sizeof(node));
    x = p->ptr;
    x->num = 5;   

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多