void hash_del(hash_table *table,uint64_t key){ lnodeptr node = hash_find_node(table,key); if(node != NULL){ linklist_remove(node); if(node->data!=NULL) { free(node->data); } node->data=NULL; lnode_free(node); } return; }
static lnodeptr hash_find_node(hash_table *table,uint64_t key){ linklist *l = get_linklist(table,key); hash_node *hnode =NULL; lnodeptr node = linklist_first(l); while(node){ hnode = (hash_node *)node->data; if(hnode->key == key){ hnode->access_time = time(NULL); /* put the lastest item to the head of the link list */ (void)linklist_remove(node); linklist_push(l,node); return node; } node = linklist_get_next(l,node); } return NULL; }
int main(int argc, const char *argv[]) { Linklist *testList = NULL; int i; srand(time(0)); printf("list length is %d\n",linklist_length(testList)); for(i = 0; i < 10 ; i++){ /* node->value = rand()%100+1; */ linklist_insert(&testList, i,0); } printf("list length is %d\n",linklist_length(testList)); linklist_print(testList); linklist_remove(&testList, 9); printf("list length is %d\n",linklist_length(testList)); linklist_print(testList); linklist_destroy(&testList); linklist_print(testList); return 0; }