如何在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*));