0

我正在使用 c 中的链表,但我的程序实际上同时需要大量链表,所以当我想添加一个新节点时,我必须确定应该添加到哪个列表,我有一个函数返回要添加的所需列表的头,但我有点困惑我应该如何编写“add_node”函数,因为头节点每次都不相同,我不想使用“switch case”,因为它会是很长...提前谢谢

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

3 回答 3

0

如果我正确地回答了您的问题,您需要一些链接列表,每个链接列表都有不同的标题。现在您想以相同的方式访问所有链接列表。

我的解决方案是你为什么不尝试Hash Table

试试哈希表,你会得到解决方案。

于 2013-07-23T05:34:00.347 回答
0

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

于 2013-07-23T04:09:26.327 回答
0
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;
}

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

于 2013-07-23T02:37:59.497 回答