C 在链表的开头插入元素在函数中起作用,但从函数返回时,起始点为空
我尝试使用此函数在空链表的开头插入:C 在链表的开头插入元素在函数中起作用,但从函数返回时,起始点为空,c,C,我尝试使用此函数在空链表的开头插入: void push(Node* node_to_insert, searchQueue* queue) { searchQueue* elem_to_insert = (searchQueue*)malloc(sizeof(searchQueue)); elem_to_insert->node = node_to_insert; if(queue_size == 0) elem_to_insert->nex
void push(Node* node_to_insert, searchQueue* queue)
{
searchQueue* elem_to_insert = (searchQueue*)malloc(sizeof(searchQueue));
elem_to_insert->node = node_to_insert;
if(queue_size == 0)
elem_to_insert->next = NULL;
else
elem_to_insert->next = queue;
queue = elem_to_insert;
queue_size++;
}
searchQueue* queue = (searchQueue*)malloc(sizeof(searchQueue));
push(start_node, queue);
在函数执行期间,一切都按预期工作,但返回时,指向列表开头的指针为空
这是我用来调用函数的代码:
void push(Node* node_to_insert, searchQueue* queue)
{
searchQueue* elem_to_insert = (searchQueue*)malloc(sizeof(searchQueue));
elem_to_insert->node = node_to_insert;
if(queue_size == 0)
elem_to_insert->next = NULL;
else
elem_to_insert->next = queue;
queue = elem_to_insert;
queue_size++;
}
searchQueue* queue = (searchQueue*)malloc(sizeof(searchQueue));
push(start_node, queue);
我还尝试在初始化列表时不分配内存,但仍然得到相同的结果。您正在
推送中更改指针的本地副本。这不会更改调用函数中指针的值
我建议将push
的返回类型更改为searchQueue*
并返回新指针
searchQueue* push(Node* node_to_insert, searchQueue* queue)
{
searchQueue* elem_to_insert = (searchQueue*)malloc(sizeof(searchQueue));
elem_to_insert->node = node_to_insert;
if(queue_size == 0)
elem_to_insert->next = NULL;
else
elem_to_insert->next = queue;
queue = elem_to_insert;
queue_size++;
return element_to_insert;
}
在调用函数中,使用:
queue = push(start_node, queue);
在队列中=元素插入代码>您正在覆盖作为函数参数传递的变量的本地副本。