总之-我的意思是:
我有一个“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,和...这就是我想,而不是“&",在头部前面,当调用函数,但没有工作...
1条答案
按热度按时间bxpogfeg1#
在你的
if
块中你没有使用函数参数。在insertAtBeg()
中没有head
变量。