我正在努力为我的链表分配一个内存,它嵌入在它的父链表中 - 嵌套结构。
结构声明:
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点结束,在它们之间是距离变量。所以基本上我想找到从达到B点的最短路径(更少的计算=短的执行时间)。
感谢您的建议。
答案 0 :(得分:0)
正确定义结构后,您可以分配嵌入式列表元素,如下所示:
temp->EMBED.next = malloc(sizeof(struct embed));
答案 1 :(得分:0)
结构定义中不需要内部typedef。事实上,我的海湾合作委员会不喜欢它。这有效:
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;
}