Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中创建链表节点的动态数组?_C - Fatal编程技术网

如何在c中创建链表节点的动态数组?

如何在c中创建链表节点的动态数组?,c,C,基本上,数组应该在用户输入时初始化。如果input=3,这意味着此数组可以分别在索引0,1,2中存储一个链表(总共3个列表) 准备面试…所以你可以说是在家工作 它应该是list*array=malloc(sizeof(list)*input),malloc返回新分配的内存位置的基址。您可以将其用作数组,即您可以访问数组[0]…数组[input-1]一个(单个)链表通常是一个带有指向下一个结构的指针的结构。这种模式使添加、删除和插入列表中的内容变得容易,并且仍然保持整个数据使用的灵活性和运行时的管

基本上,数组应该在用户输入时初始化。如果
input=3
,这意味着此数组可以分别在索引
0,1,2
中存储一个链表(总共3个列表)


准备面试…所以你可以说是在家工作

它应该是
list*array=malloc(sizeof(list)*input)
malloc
返回新分配的内存位置的基址。您可以将其用作数组,即您可以访问
数组[0]…数组[input-1]

一个(单个)链表通常是一个带有指向下一个结构的指针的结构。这种模式使添加、删除和插入列表中的内容变得容易,并且仍然保持整个数据使用的灵活性和运行时的管理

在您的情况下,链接列表如下所示

struct List
{
 // contents of the list
 List* Pointer_to_next_list;
};

然后可以添加跟踪每个列表的函数。我建议阅读本书了解其工作原理。

链表数组可以是头节点数组(假设采用标准链表实现),也可以是指向列表的指针数组。在这两种情况下,您似乎面临的问题是如何动态分配数组

在堆上动态分配数组的通用语法是

type * array = calloc(number_of_elements, sizeof(type))
因此,纠正代码中的编译错误将是非常困难的

int input = 3;
list ** array = calloc(input, sizeof(list*));

这就是你要找的吗

但这不意味着数组实际上只是一个分配了这么多内存的链表吗?我如何通过索引访问它?问题和代码相互矛盾;是否要动态分配一组列表或一组列表节点?链表数组…因此数组[0]具有listA,数组[1]指向listB。换句话说,我想要的不是数组的数组,而是链表的数组。但数组的大小必须取决于用户的输入
int input = 3;
list ** array = calloc(input, sizeof(list*));