リンクされたリストがあります。呼び出し関数では、最初のノードを作成し、その最初のノードのポインターを関数に渡して、さらに処理を行いました。追加のノードはその関数で作成されます。しかし、何らかの理由で、関数内の処理中に最初のノードを削除する必要があります。したがって、処理関数では、連結リストの最初のノード アドレスが次のノードに変更されます。ただし、呼び出し元の関数に戻ると、その変更は呼び出し元の関数には反映されません。呼び出し関数では、リンクされたリストの最初のノードは削除された最初のノードのままですが、どうすれば更新できますか?
呼び出し関数の内部:
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;
}