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

📄 习题4-开散列表上插入元素.c

📁 数据结构各章实验源代码; 数据结构实验源代码
💻 C
字号:
#include  "datastru.h"
#include  <stdio.h>
#include  <malloc.h>


void creat_chain_hash(CHAINHASH  *HTC[])
{/*建立开散列表*/
  CHAINHASH  *p;
  int  i, j;
  
  i = 0; scanf("%d",&i);      /*输入开散列表元素关键字值*/
  while (i != -99) {
    j = i % 13;               /*散列函数: ADD(rec(key)) = key MOD 13*/
    p = (CHAINHASH *) malloc(sizeof(CHAINHASH));    /*生成结点,挂入开散列表中*/
        p->next = HTC[j];
        p->key = i;
        HTC[j] = p;
        scanf("%d",&i); }     /*输入开散列表元素关键字值*/
}

void print_chain_hash(CHAINHASH  *HTC[])
{/*显示开散列表 */
 int i;
 CHAINHASH  *p;

for(i =0; i < 13; i++) {
	if(HTC[i] == NULL) printf("    %3d | ^ \n",i);
	else { p = HTC[i];
	       printf("    %3d | ->",i);
		   while(p != NULL) {printf("%5d ->",p->key); p = p->next;  }
		   printf("\n");
	} 
}
}

int search_chain_hash(CHAINHASH  *HTC[], int k)
{/*开散列表中查找元素*/
    CHAINHASH  *p;
    int  j;

    j = k % 13;            /*散列函数: ADD(rec(key)) = key MOD 13*/
    p = HTC[j];
    if(p != NULL)          /*开散列表中查找元素*/
       { while((p->key != k)&&(p->next != NULL))    p = p->next;
         if (p->key == k) return 1;    /*查找成功,返回 1*/
         else return 0;                /*查找不成功,返回 0*/
       }
    else return 0;
}

insert_chain_hash(CHAINHASH  *HTC[], int  i)
{/*元素插入散列表中*/ 
  CHAINHASH  *p;
  int  j;
  
  j = i % 13;          /*散列函数: ADD(rec(key)) = key MOD 13*/
  p = (CHAINHASH *) malloc(sizeof(CHAINHASH));    /*生成结点,挂入开散列表中*/
  p->next = HTC[j];
  p->key = i;
  HTC[j] = p;
}


main()
 { CHAINHASH  *HTC[MAXSIZE];
   int i, k;

   printf("\n    建立开散列表\n\n");
   for (i = 0; i<MAXSIZE; i++)
      HTC[i] = NULL;
   printf("请输入开散列表元素关键字值,关键字为正整型量,用空格分开,-99为结束标志 : ");
   creat_chain_hash(HTC);
   printf("显示建立的开散列表 : \n\n");
   print_chain_hash(HTC);
   printf("\n输入待插入元素关键字 : ");
   scanf("%d",&i);
   k = search_chain_hash(HTC, i);
   if (k == 0) { printf("表中待插入元素不存在,可插入散列表中\n\n");
                 insert_chain_hash(HTC, i);
                 printf("显示插入后的开散列表 : \n\n");
                 print_chain_hash(HTC);}
   else printf("表中待插入元素存在,不可插入散列表中\n\n");
}

⌨️ 快捷键说明

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