本文為大家分享了C語言基于哈希表實現通訊錄的具體代碼,供大家參考,具體內容如下
1.需求分析
本演示程序用C語言編寫,完成哈希表的生成,電話號碼的插入、以及查找等功能。
(1)按提示輸入相應的聯系人的相關資料;
(2)以相應的輸出形式輸出所存儲的的聯系人的資料;
(3)程序可以達到建立、添加、查找、打印的功能;
(4)程序可以判斷用戶輸入的非法數據并引導正確的輸入。
2.概要設計
存儲電話號碼的記錄時,若在存儲位置和其關鍵字之間建立某種確定的對應關系使得每個關鍵字和存儲結構中一個唯一的存儲位置相對應,那么在進行查找時,根據這個對應關系f就可以找到給定值K的像f(K)。若存儲結構中存在關接找到所查記錄。這個對應關系f稱為哈希(Hash)函數或散列函數。按照以上思路建立的表稱為哈希表或散列表。本案例設計主要考察散列表的建立、查找和修改。。
3.詳細設計
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct node { char num[11],name[15],address[20],city[15],etp[20]; struct node *next; }NUM; struct NUM *num_list[19]; int hash(char num[]) { int i,k=0; for(i=0;num[i]!='/0';i++) { k=10*k+num[i]-48; //字符轉化為數字 } k=(k%19); //除余法求散列地址 return k; }//c除留余數法處理電話號碼 void create() { struct node *p1; int k1,m=0; while(m==0) { printf("請輸入你想添加人的信息:num name address city etp,/n"); p1=(struct node *)malloc(sizeof(struct node)); scanf("%s",p1->num); scanf("%s",p1->name); scanf("%s",p1->address); scanf("%s",p1->city); scanf("%s",p1->etp); k1=hash(p1->num);//用num數組值作為參數傳遞給哈希函數得到k1 p1->next=num_list[k1];//
主站蜘蛛池模板:
汕尾市|
南皮县|
连山|
福州市|
全州县|
海盐县|
翁源县|
莎车县|
车致|
荃湾区|
嘉峪关市|
阜阳市|
新泰市|
大悟县|
明溪县|
新营市|
普定县|
当阳市|
新巴尔虎右旗|
平定县|
苏尼特左旗|
刚察县|
乌兰浩特市|
赫章县|
鄯善县|
赞皇县|
江都市|
高州市|
赤水市|
汤阴县|
武隆县|
潮安县|
修武县|
库尔勒市|
环江|
南开区|
蒙山县|
延川县|
唐山市|
堆龙德庆县|
长垣县|