我正在使用c中的链接列表,但我的程序实际上需要同时有大量链接列表,所以当我想添加一个新节点时,我必须确定应该添加哪个列表,我有一个函数返回所需列表的头部添加,但我有点困惑我应该如何编写" add_node"功能因为头节点每次都不一样,我不想使用"切换情况"因为它会很长...... 提前致谢
void add_it(int *array)
{
head=which_head(array);
curr = malloc(sizeof (node));
memcpy(curr->nconn, array, sizeof (curr->nconn));
curr->next = ?????????;
???????=curr
}
答案 0 :(得分: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()
函数应返回头部的位置,而不是指向列表第一个元素的指针(如果有的话)。
答案 1 :(得分:0)
您可以将链表头保留在数组中,也可以将其保留在另一个链表中。我会告诉你保持链表功能一般,不应该有代码来处理多个列表。当您需要将某个节点添加到特定链接列表时,可以使用数组/链接列表中的函数获取它,然后使用返回的头指针指向常规链接列表函数。因此,您可以保留额外的代码来处理链表例程之外的多头问题。
答案 2 :(得分:0)
如果我正确地提出您的问题,您需要一些链接列表,每个链接列表都有不同的标题。现在,您希望以相同的方式访问所有链接列表。
我的解决方案是你为什么不试试Hash Table
?
尝试哈希表,您将获得解决方案。