void link_list_delete(link_list *list, link_node *node) { link_node *prev = node->prev; link_node *next = node->next; if (prev) { prev->next = next; } else { /* * deleted node is head node, and 'next' node would be * first node of link list, so it would place 'next' node * as new head node of link list. */ list->head =next; } if (next) { next->prev = prev; } else { /* * deleted node is tail node, and 'prev' node would be * last node of link list, so it would place 'prev' node * as new tail node of link list. */ list->tail = prev; } link_node_free(node); list->length--; }
int main(void) { // link_head_init(&link_head); int a[5] = {1,2,3,4,5}; int i; node_t *tmp = NULL; for (i = 0; i < 5; i++) link_head = link_insert_e(link_head, a[i]); link_print(link_head); //tmp = link_search(link_head, 4); //printf("%d\n", tmp->val); tmp = link_remove(link_head, 3); link_node_free(tmp); link_print(link_head); link_destroy(link_head); return 0; }