多头链表

时间:2013-07-23 01:26:57

标签: c linked-list

我正在使用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
}

3 个答案:

答案 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

尝试哈希表,您将获得解决方案。

相关问题