C中的简单链接列表函数

时间:2015-09-24 01:39:26

标签: c function pointers struct linked-list

我试图创建一个简单的列表,我可以添加一个俱乐部的成员(其中数据是val成员ID号,姓名,姓氏,年龄)。

使用add_to_list函数时,我在使用main函数中的成员数据填充节点时遇到问题。

SqlCeConnection

3 个答案:

答案 0 :(得分:0)

在C中使用链表时,我总是喜欢使用sys/queue.h库。您可以在queue.h中使用不同的实现,但这里是man page的列表示例:

  LIST_HEAD(listhead, entry) head;
    struct listhead *headp;                 /* List head. */
    struct entry {
        ...
        LIST_ENTRY(entry) entries;          /* List. */
        ...
    } *n1, *n2, *np;

    LIST_INIT(&head);                       /* Initialize the list. */

    n1 = malloc(sizeof(struct entry));      /* Insert at the head. */
    LIST_INSERT_HEAD(&head, n1, entries);

    n2 = malloc(sizeof(struct entry));      /* Insert after. */
    LIST_INSERT_AFTER(n1, n2, entries);
                                            /* Forward traversal. */
    for (np = head.lh_first; np != NULL; np = np->entries.le_next)
        np-> ...

    while (head.lh_first != NULL)           /* Delete. */
        LIST_REMOVE(head.lh_first, entries);

我会评论这个,因为我知道它不是你在寻找的答案,但我强烈建议使用这个库。

答案 1 :(得分:0)

您的链接列表实现看起来很好,除了以下问题

  • 您的链接列表节点成员变量“name”和“lname”的类型为char,但您尝试将char *添加到列表中。
  • 由于输入参数“prev”,
  • search_in_list失败。看起来不需要它。只需在while循环后添加“return ptr”。

答案 2 :(得分:-1)

编译器是否给您错误?您似乎没有正确地调用Acknowledge。它看起来应该是这样的,

add_to_list

看起来add_to_list(123, "william", "shakespeare", 30, true); 未实现。如果列表为空,它将调用创建第一个条目,否则它不会将新数据添加到列表中。