Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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_Linked List - Fatal编程技术网

C 多头链表

C 多头链表,c,linked-list,C,Linked List,我正在用c语言处理链表,但我的程序实际上同时需要大量的链表,因此当我想添加一个新节点时,我必须确定应该添加到哪个列表中,我有一个函数可以返回需要添加的列表的标题,但我有点困惑如何编写“add_节点”功能,因为头部节点不是每次都一样,我不想使用“开关盒”,因为它会很长。。。 提前谢谢 void add_it(int *array) { head=which_head(array); curr = malloc(sizeof (node)); memcpy(curr->

我正在用c语言处理链表,但我的程序实际上同时需要大量的链表,因此当我想添加一个新节点时,我必须确定应该添加到哪个列表中,我有一个函数可以返回需要添加的列表的标题,但我有点困惑如何编写“add_节点”功能,因为头部节点不是每次都一样,我不想使用“开关盒”,因为它会很长。。。 提前谢谢

void add_it(int *array)
{
    head=which_head(array);
    curr = malloc(sizeof (node));
    memcpy(curr->nconn, array, sizeof (curr->nconn));
    curr->next = ?????????;
    ???????=curr
}

诀窍在于
which_head()
函数应该返回头的位置,而不是指向列表第一个元素(如果有的话)的指针。

您可以将链接列表头保留在一个数组中,或者再次保留在另一个链接列表中。我将告诉您保持链表函数的通用性,并且不应该有处理多个列表的代码。当需要向特定链表添加某个节点时,可以使用数组/链表中的函数获取该节点,然后使用返回的指向常规链表函数的头指针。因此,您可以将处理多标题问题的额外代码保留在链接列表例程之外。

如果我没有弄错您的问题,您需要一些链接列表,每个链接列表都有不同的标题。现在,您希望以相同的方式访问所有链接列表

我的解决方案是,为什么不尝试
哈希表


尝试使用哈希表,您将得到解决方案。

除了
数组
,您的变量没有任何类型。为什么不将所有链表放在一个数组中,并使用which_head函数确定将新节点放置在数组中的链表?它更像是一个带有链接的hashmap,尽管它的头是某种散列函数。除非所有的链接列表都不同,别介意我的建议谢谢你的回复,但我有点新。。。在我的which_head中,返回是这样的:
returnhead24065我应该如何编辑它?它应该是
return&head24065
struct Node
{
    Node *next;
    int   myData[80];
};

Node **which_head(some params);

void Add(some data)
{
    Node **head_location = whitch_head(...);
    Node *new_element = (Node*)malloc(...);

    new_element->next = *head_location;
    *head_location = new_element;
}