哈希表(线性探测再散列)

来源:互联网 发布:vmware mac os补丁 编辑:程序博客网 时间:2024/05/16 19:17
#include<stdio.h>#include<stdlib.h>typedef struct elem{   int key;   int flag;   int count;}elem;typedef struct node{  elem *base;  int length;}Table;void Creat(Table &s){int i,m,n,j;int a[100],b[100],c[100];     printf("输入表的长度:\n"); scanf("%d",&s.length); s.base=(elem*)malloc((s.length+1)*sizeof(elem)); printf("输入模值:\n"); scanf("%d",&m); for (i=0;i<s.length;i++) { s.base[i].flag=0; s.base[i].count=0; s.base[i].key=0; } printf("输入数值个数:\n"); scanf("%d",&n);for (i=0;i<n;i++){    scanf("%d",&a[i]);    b[i]=a[i]%m;c[i]=1;if (s.base[b[i]].flag==0){  s.base[b[i]].flag=1;  s.base[b[i]].count=1;  s.base[b[i]].key=a[i];}else{j=b[i];    while (s.base[j].flag==1){j++;c[i]++;}s.base[j].key=a[i];s.base[j].flag=1;s.base[j].count=c[i];}//else}//forfor (i=0;i<n;i++)        printf("数值为:%d %d\n",a[i],b[i]);printf("数据依次输出这个位置是否被放值、数据大小、数据移动次数:");for (i=0;i<s.length;i++)printf("表数据为:%d %d %d\n",s.base[i].flag,s.base[i].key,s.base[i].count);}int main(){Table s;Creat(s);return 0;}

0 0
原创粉丝点击