如何在纯C中创建链表

时间:2013-08-25 23:38:18

标签: c linked-list

我想知道如何在C中创建单个链表,其中每个节点都有:

  • 任意长度的字符串。
  • 整数列表(要存储的整数总数因节点而异,所以我不能使用整数数组。)

提前致谢。

2 个答案:

答案 0 :(得分:1)

我不打算为你编写代码,但这里有一些步骤可以帮助你入门。这是一种可行的方法;根据您的实际需要,还有其他可能会更好的工作。

首先,确定您的数据结构。你需要两个。第一个是整数的链表。第二个是包含字符串和列表的链表。以下是后者中节点的外观:

typedef struct node {
    char* someStr;
    LIST* integerList;
    struct node* next;
} NODE;

然后,有一个函数创建整数链表。有另一个为字符串分配内存并返回char*的函数。

有第三个函数,它将NODE的链接列表,字符串和int的链接列表作为参数。此函数将新NODE附加到列表,设置指向int链接列表和字符串的指针。

至少开始这个。如果您遇到任何功能,可以询问有关它们的具体问题。但你不能只是发布问题,并希望有人为你编写代码,而不是说你尝试了什么,你在哪里被困。

答案 1 :(得分:0)

据我所知:

  

整数列表(要存储的整数总数因节点而异,所以我不能使用整数数组。)

似乎你想要一个数字的动态数组,你可以使用This CCAN Module(它只是一个标题,只需删除config.h包含你就应该好了)​​

NB :数字列表似乎是一个坏主意,因此动态数组可能是最有效的方法。

NB2 :编写自己的动态数组并不难,只需查看it's algorithm

最简单的用法是:

#include "darray.h"

struct node {
    char *string;
    darray(int) numbers;
};

inline void push_number(struct node *node, int number) {
    darray_push(node->numbers, number);
}