10-6.c

来自「含有大量数据结构的源代码 请大家漫漫品味」· C语言 代码 · 共 47 行

C
47
字号
#include "stdio.h"
#include <string.h>
#define MAX_CHAR  10  /*max number of characters in an identifier */                                            
#define TABLE_SIZE 13 /*max table size = prime number*/   
typedef  struct  info{   
	char  key [MAX_CHAR ];
	 /* 其他数据 */
} element;
void init_table(element hashtable[ ])
{       
	int i ; 
    for ( i = 0 ; i < TABLE_SIZE ; i++ )
            hashtable[i].key[0]=NULL ; 
}
int transform  ( char *key )
{/* 把key转换成一个自然数*/
	int number = 0 ; 
    while   ( *key )
        number += *key++ ; 
    return number ; 
}
int hash(char *key )
{
   return (transform  (key )%TABLE_SIZE ) ; 
}
void linear_insert(element hashtable[],element item )
{/* 用线性查找,插入元素*/
        int i,hash_value ; 
        hash_value = hash  ( item.key ) ; 
        i = hash_value ; 
        while (strlen(hashtable[i].key ) ){
            if ( !strcmp( hashtable[i].key,item.key ))
                    exit(1) ; 
            i = (i+1)%TABLE_SIZE ; 
            if (i == hash_value ){
               printf ("哈希表已经满\n" ) ; 
               exit(1) ; 
            }
       }
       hashtable[i] = item ; 
}
void main()
{
	element  hash_table[TABLE_SIZE];
	element item;
	linear_insert(hash_table,item);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?