C语言编程,经常需要使用线性列表,期望能够高效的使用下标访问列表元素,内部内存管理,方便的动态添加、删除元素,排序等,请看看下面的代码能不能达到要求。
.c文件
LIST *list_new(){
LIST *l=malloc_sg(sizeof(LIST),"list_new");
if(l){
l->list=NULL;
l->size=0;
l->malloc_size=0;
}
return l;
}
void list_destroy(LIST *list){
if(list){
if(list->list) free_sg(list->list,"list_destroy");
free_sg(list,"list_destroy");
}
}
void list_destroy_ex(LIST *list,ELEMENT_FREE e_free)
{
if(list){
for(int i=0; i<list->size; i++){
e_free(list->list[i]);
}
list->size = 0;
if(list->list) free_sg(list->list,"list_destroy");
free_sg(list,"list_destroy");
}
}
int list_is_empty(LIST *ls)
{
if(ls && ls->size > 0){
return false;
}
return true;
}
int list_append(LIST *list,void *element){
if(list->lis