C - 添加到列表节点内的链接列表

标签 c linked-list nodes

我很难弄清楚如何将元素添加到链接列表中节点内的列表属性中,特别是如何设置指针。

我有一个像这样的结构:

typedef struct Node
{
    int value;
    struct Node *elements;
    struct Node *next;
}Node;
 Node *mainlist;
 Node *elemlist;

我希望能够在 mainlist 中找到一个特定的节点,并将 elemlist 中的所有元素添加到该节点 *elements 中。

我有这个函数,它接受主列表和要检查的值:

void add_elements(Node *mainlist, int value)
{
    Node *ptr = mainlist;
    Node *ptr2 = elemlist;
    while(ptr != NULL)
    {
            if(value == ptr->value)
            {
                    while(ptr2 != NULL)
                    {
                            Node *newNode = malloc(sizeof(Node));
                            newNode->value = ptr2->value;
                            newNode->next = ptr->elements;
                            ptr->elements = newNode;
                            ptr2 = ptr2->next;
                    }
            }
            ptr = ptr->next;
    }
}

我遇到了段错误,因此显然没有将 elemlist 中的元素添加到节点的元素中。我相当确定我的指针做错了。

对此的任何帮助将不胜感激。谢谢!

最佳答案

我认为:

     Node->value = ptr2->value;

应该是这样的:

    newNode->value = ptr2->value;

关于C - 添加到列表节点内的链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044888/

相关文章:

c - 打印 vmlinux 二进制文件中的所有符号信息

java - LinkedList队列实现

java - 如何获取斯坦福解析器输出作为节点和边的列表?

c++ - 在 `h` 中使用标签 `hh` 或 `printf` 是否涉及未定义的行为?

用 C 计算斯特林近似

c - OSX + homebrew + CMake + libpng 版本不匹配问题

c++ - front() 和 back() 在队列中分配值的目的? (C++)

c - 链表遍历节点和中间插入的两种方法

c - Node->next!=NULL 和 Node!=NULL 在 C 中的区别

python - node2vec 支持负边权重吗?