. c实现的哈希表。哈希函数采用除留余数法,处理哈希冲突采用链地址法。包含设计文档!在dev c++上验证过。. vs2010 中有代码.有修改过一些BUG.
2021-07-08 00:20:38 1.98MB c 哈希表 除留余数法 链地址法
1
#include #include typedef struct node { int data; struct node *next; }node; init_hash(node **A,int n) { int i; for(i=0;idata=0; A[i]->next=NULL; } } insert_hash(node **A,int value,int n) { int key; node *p,*q; key=value%n; if(A[key]->next!=NULL) { p=A[key]->next; while(p->next!=NULL) p=p->next; q=(node *)malloc(sizeof(node)); q->data=value; q->next=NULL; p->next=q; } else { q=(node *)malloc(sizeof(node)); q->data=value; q->next=NULL; A[key]->next=q; } } int search_hash(node **A,int value,int n) { int key; node *p; key=value%n; if(A[key]->next==NULL) return 0; else { p=A[key]->next; while(p!=NULL) { if(p->data==value) return 1; } return 0; } } delete_hash(node **A,int value,int n) { int key; node *p,*q; key=value%n; p=A[key]; q=A[key]->next; while(q->data!=value) { p=q; q=q->next; } p->next=q->next; free(q); } print_hash(node **A,int n) { int i; node *p; for(i=0;inext!=NULL) { p=A[i]->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } } } printf("\n"); } main() { int i,n,value,Case; node **A; printf("输入待排序元素个数:\n"); scanf("%d",&n); A=(node **)malloc(sizeof(node*)*n); //申请一个指针型数组A[n] init_hash(A,n);//初始化数组A printf("输入hash表的值(空格键分开):\n"); for(i=0;i
2021-07-03 13:48:38 2KB 哈希表 查找 链表 添加
1
问题描述: 设计一个英汉词典,支持 Search(查找)、 Insert (插入)、 Delete (删除)操作,能够实现英译汉。 基本要求: 实现字典的常用方法有: 有序线性表(Search用二分检索实现)、 AVL 树(二叉平衡搜索树)、Patricia Trie(前缀树)、散列表等, 任选一种方法实现字典的操作, 查找单词、 插入单词(插入时,先查找此,找不到插入,找到提示用户)、 删除单词(删除时,先查找,找到删除,找不到提示用户)。 测试数据:任一英文单词。 提示: 字典可以自己建立,但必须按字母a~z建立26个文件,每个单词单词的第一个字母是小写。建议从网上下载,文件。
2021-07-01 09:34:59 13.25MB MFC 小词典 哈希算法 链地址法
1
c实现的哈希表。哈希函数采用除留余数法,处理哈希冲突采用链地址法。包含设计文档!在dev c++上验证过。
2021-06-15 19:45:55 18KB 哈希表 c语言 除留余数法 链地址法
1