为嵌套链表分配内存+使用scanf



我正在努力为我的链表分配内存,这是嵌入在它的父链表嵌套结构。

结构声明:

typedef struct parent
{
        int x;  
            struct embed    
            {
                int y; 
                int l; 
                struct embed *next;     
            }EMBED;
        struct parent *next;
}PARENT;

为父链表分配内存:

PARENT *head = NULL;
PARENT *temp = (PARENT*)malloc(sizeof(PARENT));

我不知道的是我如何连接到那个嵌入式列表进行分配。什么好主意吗?

同样,当我们分配内存并连接到嵌入列表时,我想使用scanf函数将一些数据存储到该列表中,但我不知道连接声明。这是怎么回事,有人能解释一下吗?这样你们就知道我在做什么了,这是一个在树中搜索的学校项目从a点开始,在B点结束输入是数字,在它们之间是一个距离变量。所以基本上我想找到从到达点b的最短路径(更少的计算=更短的执行时间)

谢谢你的建议

一旦正确定义了结构,您就可以像这样分配一个嵌入的列表元素:

temp->EMBED.next = malloc(sizeof(struct embed));

在结构体定义中不需要这个内部类型定义。事实上,我的GCC不喜欢它。如此:

typedef struct parent
{
        int x;
        struct embed
        {
            int y;
            int l;
            struct embed *next;
        } embed;
        struct parent *next;
} PARENT;

有了这个,你可以像这样分配和填充一个列表:

    PARENT p;
    /* build up a list */
    p.embed.next = NULL;
    for (i = 0; i < 5; i++) {
        struct embed *new = malloc(sizeof *new);
        new->next = p.embed.next;
        printf("enter a number:n");
        scanf("%d", &new->y);
        p.embed.next = new;
    }

相关内容

  • 没有找到相关文章

最新更新