int insert_data_into_hash(hash_table *phash, int data) { hash_node *pnode; if (NULL == phash) { return 1; } if (NULL == phash->value[data % 10]) { pnode = (hash_node *)malloc(sizeof(struct hash_node_t)); memset(pnode, 0, sizeof(struct hash_node_t)); pnode->data = data; phash->value[data % 10] = pnode; return 0; } if (NULL != find_data_in_hash(phash, data)) { return 1; } pnode = phash->value[data % 10]; while (NULL != pnode->next) { pnode = pnode->next; } pnode->next = (hash_node *)malloc(sizeof(struct hash_node_t)); memset(pnode->next, 0, sizeof(hash_node)); pnode->next->data = data; return 0; }
static unsigned char insert_data_into_hash_table(phash_tab_t hash, int data) { pnode_t p = NULL; if (NULL == hash) { LOG("%s parament error in line : %d!\n", __FUNCTION__, __LINE__); return 1; } if (NULL == hash->value[data%10]) { p = (pnode_t)malloc(sizeof(node_t)); memset(p, 0, sizeof(node_t)); p->data = data; hash->value[data%10] = p; return 0; } if (NULL != find_data_in_hash(hash, data)) { return 1; } p = hash->value[data%10]; while (NULL != p->next) { p = p->next; } p->next = (pnode_t)malloc(sizeof(node_t)); p->next->data = data; p->next->next = NULL; return 0; }
int delete_data_from_hash(hash_table *phash, int data) { hash_node *phead; hash_node *pnode; if(NULL == phash || (NULL == phash->value[data % 10])) return 1; if (NULL == (pnode = find_data_in_hash(phash, data))) { return 1; } if (pnode == phash->value[data % 10]) { phash->value[data % 10] = pnode->next; goto final; }