我正在努力为我的链表分配内存,这是嵌入在它的父链表嵌套结构。
结构声明:
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;
}