周记3(除留余数)

发布于:2023-01-04 ⋅ 阅读:(235) ⋅ 点赞:(0)

#include <stdio.h>

#define   LEN    11

void hash_init(int hash_table[]
)

{
    for(int i=0; i<LEN; i++)

    {

        hash_table[i] = 0;

    }

    return ;

}

//除留余数法

int hash_fun(int key)

{
    return key%LEN;

}

//成功返回0

//失败返回-1

int hash_insert(int hash_table[], int key)

{

    int  index, index1;

    index = hash_fun(key);


    if(hash_table[index] == 0)

    {

        hash_table[index] = key;

        return 0;

    }


    //解决冲突---->线性探测法解决冲突

    for(int i=1; i<LEN; i++)

    {

        index1 = (index+i)%LEN;
    
    if(hash_table[index1] == 0)

        {

            hash_table[index1] = key;

            return 0;

        }

    }

    return -1;
}

void hash_show(int hash_table[])

{

    for(int i=0; i<LEN; i++)

    {

        printf("hash_table[%d] = %d\n", i, hash_table[i]);

    }

}

int main()

{

    int hash_table[LEN];

    
    hash_init(hash_table);


    hash_insert(hash_table, 20);

    hash_insert(hash_table, 30);

    hash_insert(hash_table, 70);

    hash_insert(hash_table, 15);

    hash_insert(hash_table, 8);

    hash_insert(hash_table, 12);

    hash_insert(hash_table, 18);

    hash_insert(hash_table, 63);

    hash_insert(hash_table, 19);

  
  hash_show(hash_table);

    return 0;

}
 

本文含有隐藏内容,请 开通VIP 后查看