我正在尝试用 C 编写相当于remove
for Java 的ArrayList
东西。
这是我的代码。它假定 index 是列表中的有效索引。
void arrayListRemove(ArrayList* list, int index){
int i;
if (arrayListSize(list)==1){
list->size = 0;
free(list->data);
list->data = NULL;
} else {
for(i=index;i<arrayListSize(list)-1;i++){
list->data[i] = list->data[i+1];
}
list->data = realloc(list->data, (arrayListSize(list) - 1) * sizeof(void*));
if (list->data != NULL){
--list->size;
} else {
exit(1);
}
}
}
这个对吗?
arrayListSize(list) == 1
如果没有检查,代码会工作吗?即realloc(list->data, 0)
释放arrayList?我在网上看到了关于该怎么realloc(ptr, 0)
做的相互矛盾的事情。