DListRet dlist_delete(DList* thiz, size_t index) { DListNode* cursor = dlist_get_node(thiz, index, 0); if(cursor != NULL) { if(cursor == thiz->first) { thiz->first = cursor->next; } if(cursor->next != NULL) { cursor->next->prev = cursor->prev; } if(cursor->prev != NULL) { cursor->prev->next = cursor->next; } dlist_destroy_node(thiz, cursor); } return DLIST_RET_OK; }
Ret dlist_delete(DList* thiz, size_t index) { Ret ret = RET_OK; DListNode* cursor = NULL; return_val_if_fail(thiz != NULL, RET_INVALID_PARAMS); cursor = dlist_get_node(thiz, index, 0); do { if (cursor == NULL) { ret = RET_INVALID_PARAMS; break; } if (cursor != NULL) { if (cursor == thiz->first) { thiz->first = cursor->next; } if (cursor->next != NULL) { cursor->next->prev = cursor->prev; } if (cursor->prev != NULL) { cursor->prev->next = cursor->next; } dlist_destroy_node(thiz, cursor); } } while (0); return RET_OK; }
void dlist_destroy(DList* thiz) { DListNode* iter = thiz->first; DListNode* next = NULL; while(iter != NULL) { next = iter->next; dlist_destroy_node(thiz, iter); iter = next; } thiz->first = NULL; free(thiz); return; }
void dlist_destroy(DList* thiz) { DListNode* iter = NULL; DListNode* next = NULL; return_if_fail(thiz != NULL); iter = thiz->first; while(iter != NULL) { next = iter->next; dlist_destroy_node(thiz, iter); iter = next; } thiz->first = NULL; SAFE_FREE(thiz); return; }