⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hash1.cpp

📁 The Hashtable program
💻 CPP
字号:
//
// Code by Jellydn
// Env : Dev-C++
// Chuong trinh dung bang bam voi cac so nguyen to
//

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
const int N=6; 
const int MAX=100;
typedef int infor;

struct element
{
       infor data;
       element *next;
};

typedef element *List;
List A[N];

// Cac nguyen mau ham
int Hash(int x);
int sngto(int i);
void Create(List A[]);
int Search (int x,List A[]);
void Insert(int x,List A[]);
void Delete(int x,List A[]);
void Delete_c(int i,List A[]);
void Delete_a(List A[]);
void Display(List A[]);

int main()
 {
          int cv,t,i;
          char c;
          Create(A);
          printf("\n  --------------------------------------- ");
          printf("\n |                                       |");
          printf("\n |     Chuong trinh dung bang bam        |");
          printf("\n |   cac so nguyen to nho hon 100        |");
          printf("\n |     vao cac lop co tan cung la :      |");
          printf("\n |           1,2,3,5,7,9                 |");
          printf("\n |                                       |");
          printf("\n  --------------------------------------- ");
          while(1)
          {
                  
                  printf("\n\n");
                  printf("\n  ======================================= ");
                  printf("\n |                                       |");
                  printf("\n |     Main MENU                         |");
                  printf("\n |   [1].Hien bang bam hien tai          |");
                  printf("\n |   [2].Tim mot phan tu                 |");
                  printf("\n |   [3].Them mot phan tu                |");
                  printf("\n |   [4].Xoa mot phan tu                 |");
                  printf("\n |   [5].Xoa mot lop                     |");
                  printf("\n |   [6].Xoa bang bam                    |");
                  printf("\n |   [7].Thoat chuong trinh              |");
                  printf("\n  --------------------------------------- ");
                  printf("\n Ban chon :");
                  scanf("%d",&cv);
                  switch(cv)
                  {
                            case 1 : Display(A); 
                                     printf("\n Press A key to continue...");
                                     getch(); 
                                     break;
                            case 2 : printf("\n Ban muon tim phan tu :");
                                     scanf("%d",&t);
                                     i=Search(t,A);
                                     if(i>=0)
                                       printf("\n Tim thay phan tu trong lop thu %d cua bang bam ",i);
                                     else
                                       printf("\n Khong tim thay phan tu trong bang bam");
                                     printf("\n Press A key to continue...");
                                     getch(); 
                                     break;
                            case 3 : printf("\n Ban muon them phan tu :");
                                     scanf("%d",&t);
                                     Insert(t,A);
                                     printf("\n Press A key to continue...");
                                     getch(); 
                                     break;
                           case 4  : printf("\n Ban muon xoa phan tu :");
                                     scanf("%d",&t);          
                                     Delete(t,A);
                                     printf("\n Press A key to continue...");
                                     getch(); 
                                     break;
                           case 5  : printf("\n Ban muon xoa lop thu :");
                                     scanf("%d",&t);
                                     Delete_c(t,A);
                                     printf("\n Press A key to continue...");
                                     getch(); 
                                     break;
                           case 6  : // Xoa cac ky tu dang con luu trong bo nho dem
                                     char ss[80];
                                     gets(ss);
                                     printf("\n Ban muon xoa bang bam (c/k) ... ?");
                                     c=getchar();      
                                     if(c=='c'||c=='C') Delete_a(A);
                                     printf("\n Press A key to continue...");
                                     getch(); 
                                     break;
                           case 7  : exit(0); break;
                                                             
                                     
                  }
          }
 }

// Cac chuong trinh con
int Hash(int x)
{
    int vt;
    vt=x%10;
    if(vt==1) return 0;
    else if(vt==2) return 1;
    else if(vt==3) return 2;
    else if(vt==5) return 3;
    else if(vt==7) return 4;
    else if(vt==9) return 5;
    else return -1;
 
}
int sngto(int i)
{
    int j=2;
    while( i%j && j<sqrt(i)) j++;
    if (j > sqrt(i)) return 1 ;
    else return 0;
 
}
void Create(List A[])
{
     int i,vt;
     List p;
     // Khoi tao bang bam
     for(i=0;i<N;i++) 
     A[i]=NULL;         
     // Them cac so nguyen to vao cac lop tuong ung trong bang bam
     for(i=2;i<=MAX;i++)
       {
        if(sngto(i))
         {
          // Tao bo nho de them phan tu moi vao bang bam
          p=new element;
          p->data=i;
          // Tim lop de them vao
          vt=Hash(i);
          // Them vao dau lop
          p->next=A[vt];
          A[vt]=p;
                
         }                
         
       }
}
int Search (int x,List A[])
{
    int vt=Hash(x);
    List p;
    if(vt>=0)
    {
    p=A[vt];
    while(p!=NULL && p->data!=x) 
         p=p->next;
    if(p!=NULL) return vt ;
    else return -1;              
    }
    else return -1;
}
void Insert(int x,List A[])
{
    int vt=Hash(x);
    List p;
    if(vt>=0 && sngto(x))
    {
    // Kiem tra da co trong lop
    p=A[vt];
    while(p!=NULL && p->data!=x) 
    p=p->next;
    // Neu co
    if(p!=NULL) printf("\n Da co phan tu %d trong bang bam ",x);
    else // hoac chua
     {
         // tao moi phan tu
         p=new element;
         p->data=x;
         // them vao dau
         p->next=A[vt];
         A[vt]=p;
         printf("\n Da chen phan tu %d vao lop %d",x,vt);
     }
    }
    else
    printf("\n Khong chen vao bang bam vi khong thuoc lop nao ca ");
      
}
void Delete(int x,List A[])
{
    int vt=Hash(x);
    List p,before;
    if(vt>=0)
    {
    // Kiem tra da co trong lop
    p=A[vt];
    while(p!=NULL && p->data!=x) 
    {
    // before chua dia chi cua phan tu truoc phan tu can xoa
    before=p;
    p=p->next;
    } 
    // Neu co
    if(p!=NULL) 
     {
     // Neu phan tu can xoa o dau
     if (p==A[vt]) A[vt]=p->next;
     else          before->next=p->next;
     delete p;
     printf("\n Da xoa phan tu %d ra khoi bang bam ",x);
     }
    else
    printf("\n Khong co phan tu can xoa trong bang bam"); 
    }
    else
    printf("\n Khong co phan tu can xoa trong bang bam");  
 }
void Delete_c(int i,List A[])
{
     List p;
     while(p=A[i])
      {
       A[i]=p->next;
       delete p;           
      }
     
 }
void Delete_a(List A[])
{
     int i;
     for(i=0;i<N;i++)
      Delete_c(i,A);
}
void Display(List A[])
{
     int i;
     List p;
     printf("\n Cac phan tu trong bang bam .");
     for(i=0;i<N;i++)
      {
                     p=A[i];
                     printf("\n Phan tu trong lop thu %d:",i);
                     while(p!=NULL)
                      {
                      printf(" %d ",p->data);
                      p=p->next;             
                      }
      }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -