如何创建链表(指向结构的指针) - c

时间:2016-03-22 09:31:18

标签: c linked-list

已经给出了一些功能,但似乎无法使主方法工作(主列表)。我认为会发生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   

1 个答案:

答案 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