Ở trường mình đâu học hashtable nhỉ!!!
Bạn tham khảo code này nhá, cái này là lưu trữ giá trị số nguyên
Mã:
#include<stdio.h>
#include<conio.h>
#define M 11 // khai bao kich thuoc bang bam
#define NULLKEY -365 // khai bao nut rong co gia tri la -365
#define TRUE 1
#define FALSE 0
int BangBam[M]; // tao bang bam voi kich thuoc M
int SoNut; // so nut cua bang bam
int HamBam(int k)
{
return k%M;
}
void KhoiTaoBangBam()
{
for(int i=0;i<M;i++)
BangBam[i]=NULLKEY;
}
int Full() // kiem tra xem bang bam da day hay chua?
{
if (SoNut==M-1) return TRUE;
else return FALSE;
}
int Search(int k) // tim kiem khoa K co o trong bang bam hay khong?
{
int i=HamBam(k);
while (BangBam[i]!=k && BangBam[i]!=NULLKEY)
{
i++;
if (i>=M) i=i-M;
}
if (BangBam[i]==k) return i;
else return M;
}
int ThemPhanTu(int k) // them khoa k vao bang bam
{
int i,j;
if (Full())
{
printf("\nBang bam da day");
return 0;
}
i=HamBam(k);
while (BangBam[i]!=NULLKEY)
{
i++;
if (i>=M) i=i-M;
}
BangBam[i]=k;
SoNut++;
return i;
}
void InBangBam()
{
printf("\nBANG BAM CUA BAN:\n");
printf("\n\t\tVi tri\t\t\tKhoa\n");
for(int i=0;i<M;i++)
if (BangBam[i]!=NULLKEY)
printf("\n\t\t%d\t\t\t%d",i,BangBam[i]);
else
printf("\n\t\t%d\t\t\tNULL",i);
}
void main()
{
clrscr();
int khoa_nhap,khoa_tim;
KhoiTaoBangBam();
printf("\tCHUONG TRINH MINH HOA BANG BAM DUNG PHUONG PHAP TIM TUYEN TINH");
for(int i=0;i<M-1;i++)
{
printf("\nNhap phan tu thu %d:",i+1);
scanf("%d",&khoa_nhap);
ThemPhanTu(khoa_nhap);
}
InBangBam();
printf("\n\nNhap vao khoa ban can tim:");
scanf("%d",&khoa_tim);
int result=Search(khoa_tim);
if (result==M) printf("Khong tim thay %d trong bang bam",khoa_tim);
else printf("\nTim thay roi! %d nam o vi tri thu %d trong bang bam",khoa_tim,result);
getch();
}