예제 #1
0
파일: hash.c 프로젝트: zhaowoxin/work
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;
}
예제 #2
0
파일: hash.c 프로젝트: magicwen666/self
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;
}
예제 #3
0
파일: hash.c 프로젝트: zhaowoxin/work
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;
    }