我有一个链接列表。在调用函数中,我创建了第一个节点,并将第一个节点的指针传递给函数以进行进一步处理。附加节点是在该函数中创建的。但是由于某种原因,在函数的处理过程中,必须删除第一个节点。所以在处理函数中,将链表的第一个节点地址更改为下一个节点。但是当返回调用函数时,这种变化不会反映在调用函数中。在调用函数中,链表的第一个节点还是被删除的第一个节点,如何更新?
内部调用函数:
model_list *allmodelroot;
allmodelroot = new model_list;
allmodelroot->next = NULL;
allmodelroot->modelIndex = -1;
processfunction(bmodelroot, wmodelroot, settings, featurePts, allmodelroot);
内部进程函数;
int processfunction(model_list *bmodelroot, model_list *wmodelroot, set_setting &settings, calib_features &featurePts, model_list *allmodelroot)
{
model_list *first_allmodelroot = allmodelroot;
model_list *previous = allmodelroot;
for(i = 0; i < allmodelrootSize; i++)
{
if(usemodel[i] == false)
{
//delete the first node
first_allmodelroot = allmodelroot->next;
previous = allmodelroot->next;
delete allmodelroot;
allmodelroot = previous;
}else{
previous = allmodelroot;
allmodelroot = allmodelroot->next;
}
}
allmodelroot = first_allmodelroot;
}