Ai có Code C của bài toán ứng dụng cấu trúc dữ liệu bảng băm và hàm băm để làm từ điển đơn giản không??? (chương trình có thể nhập từ mới, sửa chữa và tra từ mới) Cảm Ơn!!!
Ở 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(); }