📄 hashi_sepchaining.c
字号:
#include "hashi_sepchaining.h"#include <stdlib.h>#include <stdio.h>int testhash(int k) { return k%50;}hashTable *CreateNew_hs(void){ hashTable* p = malloc(sizeof(hashTable)); p->keysize = 50; p->totalsize = 0; int i; for(i=0;i<50;i++){ (p->keyTable[i]) = CreateNew(); } //add hashi fun p->hashfun = testhash; return p;}int Insert_hs (int id,int type,int size,hashTable *h){ int index = h->hashfun(id); Insert_sl(id,type,size,h->keyTable[index]); h->totalsize++;}Node_sl* Delete_hs(int id , hashTable* h){ int index = h->hashfun(id); Delete_sl(id,h->keyTable[index]); h->totalsize--;}Node_sl* Find_hs(int id , hashTable* h){ int index = h->hashfun(id); return Find_sl(id, h->keyTable[index]);}void print_hs(hashTable* h){ int i; for(i=0;i<50;i++){ printf("%d ->>",i); print_sl(h->keyTable[i]); printf("\n"); }}void merge_hs(Node_sl *array[], int p, int q, int r) { int n1 = q-p+1; int n2 = r-q; Node_sl *right = malloc(sizeof(Node_sl*)*(n1+1)); Node_sl *left = malloc(sizeof(Node_sl*)*(n2+1)); int i,k,j; for(i=0; i<n1; i++){ left++; left = array[p+i]; } for(i=0; i<n2; i++){ right++; right = array[q+1+i]; } i=0; j=0; left[n1].size = 0xFFFFFFFF; right[n2].size = 0xFFFFFFFF; for(k=p; k<=r; k++){ if(left[i].size < right[j].size) { array[k] = (left+i); i++; } else { array[k] = (right+j); j++; } } }void MergeSrt(Node_sl *array[], int p, int r) { if(p<r){ int q = (p+r)/2; MergeSrt(array,p,q); MergeSrt(array,q+1,r); merge_hs(array,p,q,r); }}void printOrdered_hs(hashTable *h) { }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -