C语言 当我需要从另一个函数调用一个创建一个节点列表的函数时,我应该怎么做,但是第一个函数需要一个指针作为参数?

5vf7fwbs  于 2022-12-29  发布在  其他
关注(0)|答案(1)|浏览(88)

总之-我的意思是:
我有一个“addToEmpty”函数,它将一个节点添加到一个空的双向链表中...

void addToEmpty(struct node **ptr, int value)
{
    struct node *newNode;
    newNode = (struct node *)malloc(sizeof(struct node));

    newNode->prev = NULL;
    newNode->data = value;
    newNode->next = NULL;
    (*ptr) = newNode;
}

我从main调用它:

int main(void)
{
    struct node *head = NULL;

    addToEmpty(&head, 10);
    return 0;
}

到目前为止,一切都很好...但随后,我得到了另一个在链表开头插入节点的函数:

void insertAtBeg(struct node **ptr, int value)
{
    struct node *newNode;
    newNode = (struct node *)malloc(sizeof(struct node));

    if(*ptr == NULL) // om listan är tom
    {
        addToEmpty(&head, 10);  //  <--- This here doesn't work anymore
    }
    else
    {
        newNode->data = value;
        (*ptr)->prev = newNode;
        newNode->next = *ptr;
        (*ptr) = newNode;
    }
}

在这里,第一个if语句,检查列表是否真的为空,如果是,我想使用addToEmpty函数,但是我不能,我也不明白为什么,因为我几乎不理解列表,指针,引用等等......有人能帮帮我吗?解释一下为什么它不对我起作用?
我试着把 *,**,nothing,和...这就是我想,而不是“&",在头部前面,当调用函数,但没有工作...

bxpogfeg

bxpogfeg1#

在你的if块中你没有使用函数参数。在insertAtBeg()中没有head变量。

if(*ptr == NULL) // om listan är tom
{
    addToEmpty(ptr, value);
}

相关问题