Advertisement
NB52053

1st Code

Nov 27th, 2018
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define numbOfList 4
  6. #define numbOfChars 50
  7.  
  8.  
  9. struct symbolInfo{
  10.     char name[numbOfChars];
  11.     char classType[numbOfChars];
  12.     struct symbolInfo *next;
  13. }*symbolTable[numbOfList];
  14.  
  15.  
  16. void displayAll(){
  17.  
  18.     printf("Displaying the list :- \n");
  19.     struct symbolInfo *isNull;
  20.  
  21.     int i;
  22.     for(i=0; i<numbOfList;i++){
  23.         isNull=symbolTable[i];
  24.  
  25.         printf("\n%d No. list :  ", i+1);
  26.         while(isNull!=NULL){
  27.             printf("<%s,%s>  ",isNull->name, isNull->classType);
  28.             isNull=isNull->next;
  29.         }
  30.     }
  31.  
  32.     printf("\n");
  33. }
  34.  
  35.  
  36. void insert(char setName[numbOfChars], char setClassType[numbOfChars], int hashKey){
  37.     struct symbolInfo *isNull;
  38.     struct symbolInfo *temp;
  39.     isNull = symbolTable[hashKey];
  40.     temp = malloc(sizeof(struct symbolInfo));
  41.     temp -> next = NULL;
  42.     strcpy(temp->name, setName);
  43.     strcpy(temp->classType, setClassType);
  44.     symbolTable[hashKey] = temp;
  45.     symbolTable[hashKey] ->next = isNull;       //assume, symbolTable[hashKey] == head
  46. }
  47.  
  48.  
  49. int searchInList(char getName[numbOfChars], char getClassType[numbOfChars]){
  50.     int isFound = 0;                            //Not found
  51.     int listNumber = getHashKey(getName);
  52.  
  53.     struct symbolInfo *isNull;
  54.     isNull = symbolTable[listNumber];
  55.  
  56.     while(isNull!=NULL){
  57.         if((strcmp(isNull->name,getName) == 0) && (strcmp(isNull->classType,getClassType) == 0)){
  58.             isFound = 1;
  59.             break;
  60.         }
  61.         isNull=isNull->next;
  62.     }
  63.  
  64.     return isFound;
  65.  
  66. }
  67.  
  68.  
  69. void deleteFromList(char getName[numbOfChars], char getClassType[numbOfChars]){
  70.     struct symbolInfo *isNull;
  71.     struct symbolInfo *prev;
  72.  
  73.     int listNumber = getHashKey(getName);
  74.     isNull = symbolTable[listNumber];
  75.  
  76.     if((strcmp(symbolTable[listNumber]->name,getName) == 0)&& (strcmp(symbolTable[listNumber]->classType,getClassType)== 0)){
  77.         symbolTable[listNumber] = isNull->next;
  78.     }
  79.     else{
  80.         while(isNull!=NULL){
  81.             if((strcmp(isNull->name,getName) == 0) && (strcmp(isNull->classType,getClassType) == 0)){
  82.                 prev->next=isNull->next;
  83.                 break;
  84.             }
  85.             prev=isNull;
  86.             isNull=isNull->next;
  87.         }
  88.     }
  89. }
  90.  
  91.  
  92. void UpdateList(char getName[numbOfChars], char getClassType[numbOfChars], char updatedClassType[numbOfChars]){
  93.     int listNumber = getHashKey(getName);
  94.  
  95.     struct symbolInfo *isNull;
  96.     isNull = symbolTable[listNumber];
  97.  
  98.     while(isNull!=NULL){
  99.         if((strcmp(isNull->name,getName) == 0) && (strcmp(isNull->classType,getClassType) == 0)){
  100.             strcpy(isNull->classType, updatedClassType);
  101.             break;
  102.         }
  103.         isNull=isNull->next;
  104.     }
  105. }
  106.  
  107.  
  108. int getHashKey(char value[numbOfChars]){
  109.     int total = 0;
  110.     int i;
  111.  
  112.     for(i=0; i<strlen(value); i++){
  113.         total = total + value[i];
  114.     }
  115.  
  116.     return total%numbOfList;
  117. }
  118.  
  119.  
  120. void menu(){
  121.  
  122.     int choice;
  123.  
  124.     while(1){
  125.         printf("-------Menu------\n");
  126.         printf("1.  Insert\n");
  127.         printf("2.  Search\n");
  128.         printf("3.  Delete\n");
  129.         printf("4.  Update\n");
  130.         printf("5.  Show lists\n");
  131.         printf("6.  Exit\n");
  132.         printf("-----------------\n\n");
  133.  
  134.         printf("Enter choice: ");
  135.         scanf("%d", &choice);
  136.         printf("\n");
  137.  
  138.         if(choice == 6){
  139.             break;
  140.         }
  141.         else if (choice == 1){
  142.  
  143.             printf("Keep inserting. Enter 0 in both cases to stop\n\n");
  144.  
  145.             while(1){
  146.                 char setName[numbOfChars];
  147.                 char setClassType[numbOfChars];
  148.                 int hashKey;
  149.  
  150.                 printf("Enter the name : ");
  151.                 scanf("%s", setName);
  152.                 printf("Enter class type : ");
  153.                 scanf("%s", setClassType);
  154.                 printf("\n");
  155.  
  156.                 if((strcmp(setName, "0") == 0) && (strcmp(setClassType, "0") == 0)){
  157.                     break;
  158.                 }
  159.  
  160.                 hashKey = getHashKey(setName);
  161.                 insert(setName, setClassType, hashKey);
  162.             }
  163.         }
  164.         else if (choice == 2){
  165.  
  166.             char getName[numbOfChars];
  167.             char getClassType[numbOfChars];
  168.  
  169.             printf("Enter the name for searching: ");
  170.             scanf("%s", getName);
  171.             printf("Enter class type for searching: ");
  172.             scanf("%s", getClassType);
  173.             printf("\n");
  174.  
  175.             int isFound = searchInList(getName, getClassType);
  176.             printf("Search Result : %d", isFound);
  177.         }
  178.         else if (choice == 3){
  179.  
  180.             char getName[numbOfChars];
  181.             char getClassType[numbOfChars];
  182.  
  183.             printf("Enter the name for deleting: ");
  184.             scanf("%s", getName);
  185.             printf("Enter class type for deleting: ");
  186.             scanf("%s", getClassType);
  187.             printf("\n");
  188.  
  189.             deleteFromList(getName, getClassType);
  190.         }
  191.         else if (choice == 4){
  192.  
  193.             char getName[numbOfChars];
  194.             char getClassType[numbOfChars];
  195.             char updateClassType[numbOfChars];
  196.  
  197.             printf("Enter the name for searching: ");
  198.             scanf("%s", getName);
  199.             printf("Enter class type for searching: ");
  200.             scanf("%s", getClassType);
  201.             printf("Enter class type for Update: ");
  202.             scanf("%s", updateClassType);
  203.             printf("\n");
  204.  
  205.             UpdateList(getName, getClassType, updateClassType);
  206.         }
  207.         else if (choice == 5){
  208.  
  209.             displayAll();
  210.         }
  211.  
  212.         printf("\n\n");
  213.     }
  214. }
  215.  
  216.  
  217. int main(){
  218.  
  219.     menu();
  220.  
  221.     printf("\n\n\n");
  222.     return 0;
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement