我想知道如何在 C 中创建单个链表,其中每个节点都有:
- 任意长度的字符串。
- 整数列表(要存储的整数总数在节点之间会有所不同,所以我不能使用整数数组)。
提前致谢。
我不会为您编写代码,但这里有一些步骤可以帮助您入门。这是一种可能的方法;考虑到您的实际需求,还有其他可能会更好。
首先,确定您的数据结构。你需要两个。第一个是整数链表。第二个是包含字符串和列表的链表。以下是后者中的节点可能的样子:
typedef struct node {
char* someStr;
LIST* integerList;
struct node* next;
} NODE;
然后,拥有一个创建整数链表的函数。有另一个函数为字符串分配内存并返回一个char*
.
有第三个函数,它将s 的链表NODE
、字符串和 s的链表作为参数int
。这个函数将一个新的添加NODE
到列表中,设置指向链表int
和字符串的指针。
至少从这个开始。如果您在任何功能上遇到困难,您可以询问有关它们的具体问题。但是你不能只是发布问题并期望有人为你编写代码,而不说明你尝试了什么以及你卡在哪里。
据我了解:
整数列表(要存储的整数总数在节点之间会有所不同,所以我不能使用整数数组)。
看来你想要一个数字的动态数组,你可以使用This CCAN Module(它只是一个标题,只需删除 config.h 包含,你应该很高兴)
注意:数字列表似乎是个坏主意,因此动态数组可能是最有效的方法。
NB2:编写自己的动态数组并不难,只要看看它的算法
最简单的用法是这样的:
#include "darray.h"
struct node {
char *string;
darray(int) numbers;
};
inline void push_number(struct node *node, int number) {
darray_push(node->numbers, number);
}