我想知道如何在C中创建单个链表,其中每个节点都有:
- 任何长度的绳子
- 整数列表(要存储的整数总数在节点之间会有所不同,所以我不能使用整数数组)
提前谢谢。
我不打算为您编写代码,但下面是一些入门步骤。这是一种可能的方法;考虑到你的实际需求,还有一些可能会更好地发挥作用。
首先,确定您的数据结构。你需要两个。第一个是整数的链表。第二个是包含字符串和列表的链表。以下是后者中的节点可能是什么样子的:
typedef struct node {
char* someStr;
LIST* integerList;
struct node* next;
} NODE;
然后,有一个函数可以创建整数的链表。使用另一个函数为字符串分配内存并返回一个char*
。
具有第三个函数,该函数将NODE
s的链表、字符串和int
s的链表作为参数。该函数将一个新的NODE
添加到列表中,设置指向int
和字符串的链表的指针。
至少开始吧。如果你在任何一个函数上遇到了问题,你可以问一些关于它们的具体问题。但是,你不能只发布问题并期望有人为你编写代码,而不说你尝试了什么以及你在哪里遇到了困难。
根据我的理解:
整数列表(要存储的整数总数在节点之间会有所不同,所以我不能使用整数数组)。
似乎你想要一个数字的动态数组,你可以使用这个CCAN模块(它只是一个标题,只需删除config.h包含,你应该很好去)
NB:数字列表似乎是个坏主意,所以动态数组可能是最有效的方法。
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);
}