deleteはfree()関数を使用し、値を変更するだけで新しいノードは作成しないため、削除するとは思いません。私はJavaから来ているので私は尋ねている、私はメモリ割り当てに新しいです。C - これらの関数はガベージを生成しますか?
IntNodePtr delete(int i, IntNodePtr p) {
/* End of list check */
if(p == NULL)
return NULL;
/* Check if current node is the one to delete */
if(p->myInt == i) {
IntNodePtr temp;
temp = p->next;
free(p);
return temp;
}
p->next = delete(i, p->next);
return p;
}
IntNodePtr replace(int i, int j, IntNodePtr p) {
if(p == NULL)
return NULL;
if(p->myInt == i)
p->myInt = j;
p->next = replace(i, j, p->next);
return p;
}
どのように両方の方法を使用したかを考えれば、私にとってはうまく見えます。 –
C言語で関数 'delete'を呼び出すことは正当ですが、C++コードから呼び出せるように、別の名前(' delete_node'など)に名前を変更することを強くお勧めします。 –