已经给出了一些功能,但似乎无法使主方法工作(主列表)。我认为会发生1个主列表和insert_at_front将添加到它,但它只打印出第一个列表(10)。任何人都知道如何获得链表?在此先感谢:)
typedef struct node
{
int data;
struct node *next;
} *List;
void print_list(List *self);
void insert_at_front(List *self, int data);
头:
WITH RECURSIVE_Region(ID, NAME, PARENT_ID) AS
(
-- Anchor member: get root node
SELECT ID, NAME, PARENT_ID
FROM Acc_Region
WHERE ID = 1
UNION ALL
-- Recursive member: get nodes of next level
SELECT t1.ID, t1.NAME, t1.PARENT_ID
FROM Acc_Region AS t1
JOIN RECURSIVE_Region AS t2 ON t1.PARENT_ID = t2.ID
)
SELECT *
FROM RECURSIVE_Region
答案 0 :(得分:1)
您typedefed
List
作为指向struct node
的指针,因此List *master
的声明实际上是指向node
的指针的指针。获取master
(&master
)的地址时,获取指向指向node
的指针的指针。不完全是你想要的:))
您需要将master
的声明更改为指向node
的指针,然后获取其地址
List master; // before: List* master
insert_at_front(&master, 10);
insert_at_front(&master, 20);
print_list(&master);
修改强>
还包括使用<stdio.h>
的{{1}}。
目前,您还要创建memory leak,因为您通过调用printf
来分配内存,但从不调用malloc
。
通常,您可以做的最好的事情就是在您编写首先分配内存的内容后立即编写一个清理函数来释放内存。清理可能如下所示:
free