Bảng băm (HashTable)- chương trình từ điển


Viết chương trình Từ điển sử dụng cấu trúc bảng băm với các chức năng sau
• Thêm một từ mới
• Tra từ
• Cập nhật từ (sửa đổi nội dung)
• Xoá từ

CHƯƠNG TRÌNH MINH HỌA BẢNG BĂM DÙNG PHƯƠNG PHÁP DÒ TUYẾN TÍNH, GIÁ TRỊ LƯU TRỮ LÀ SỐ NGUYÊN
C Code:
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #define M 11  // khai bao kich thuoc bang bam
  4. #define NULLKEY -365  // khai bao nut rong co gia tri la -365
  5. #define TRUE 1
  6. #define FALSE 0
  7. int BangBam[M];  // tao bang bam voi kich thuoc M
  8. int SoNut; // so nut cua bang bam
  9. int HamBam(int k)
  10. {
  11.     return k%M;
  12. }
  13. void KhoiTaoBangBam()
  14. {
  15.     for(int i=0;i<M;i++)
  16.         BangBam[i]=NULLKEY;
  17. }
  18. int Full()  // kiem tra xem bang bam da day hay chua?
  19. {
  20.     if (SoNut==M-1) return TRUE;
  21.     else return FALSE;
  22. }
  23. int Search(int k)  // tim kiem khoa K co o trong bang bam hay khong?
  24. {
  25.     int i=HamBam(k);
  26.     while (BangBam[i]!=&& BangBam[i]!=NULLKEY)
  27.     {
  28.         i++;
  29.         if (i>=M) i=i-M;
  30.     }
  31.     if (BangBam[i]==k) return i;
  32.     else return M;
  33. }
  34. int ThemPhanTu(int k) // them khoa k vao bang bam
  35. {
  36.     int i,j;
  37.     if (Full())
  38.     {
  39.         printf("\nBang bam da day");
  40.         return 0;
  41.     }
  42.     i=HamBam(k);
  43.     while (BangBam[i]!=NULLKEY)
  44.     {
  45.         i++;
  46.         if (i>=M) i=i-M;
  47.     }
  48.     BangBam[i]=k;
  49.     SoNut++;
  50.     return i;
  51. }
  52. void InBangBam()  
  53. {
  54.     printf("\nBANG BAM CUA BAN:\n");
  55.     printf("\n\t\tVi tri\t\t\tKhoa\n");
  56.     for(int i=0;i<M;i++)
  57.         if (BangBam[i]!=NULLKEY)
  58.             printf("\n\t\t%d\t\t\t%d",i,BangBam[i]);
  59.         else
  60.             printf("\n\t\t%d\t\t\tNULL",i);
  61. }
  62. void main()
  63. {
  64.     clrscr();
  65.     int khoa_nhap,khoa_tim;
  66.     KhoiTaoBangBam();
  67.     printf("\tCHUONG TRINH MINH HOA BANG BAM DUNG PHUONG PHAP TIM TUYEN TINH");
  68.     for(int i=0;i<M-1;i++)
  69.     {
  70.         printf("\nNhap phan tu thu %d:",i+1);
  71.         scanf("%d",&khoa_nhap);
  72.         ThemPhanTu(khoa_nhap);
  73.     }
  74.     InBangBam();
  75.     printf("\n\nNhap vao khoa ban can tim:");
  76.     scanf("%d",&khoa_tim);
  77.     int result=Search(khoa_tim);
  78.     if (result==M) printf("Khong tim thay %d trong bang bam",khoa_tim);
  79.     else printf("\nTim thay roi! %d nam o vi tri thu %d trong bang bam",khoa_tim,result);
  80.     getch();
  81. }






Source code[Đồ án-C#]: 
Liên hệ: vuthanhnam94@gmail.com
Ntech Developers

Programs must be written for people to read, and only incidentally for machines to execute.

Post a Comment

Previous Post Next Post