博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
散列技术之链地址法(基于无序链表)
阅读量:5115 次
发布时间:2019-06-13

本文共 1759 字,大约阅读时间需要 5 分钟。

源码例如以下:

#include 
#include
#define hash(v,M) (v % M)typedef char Key;struct Item{ Key key;};typedef struct STnode* link;struct STnode{ Item item ; link next;};static link* heads , z ;static struct Item NULLitem ;static int N , M ;Key key(Item item){ return item.key;}//创建一个节点 static link NEW(Item item, link next){ link x = (link)malloc(sizeof *x); x->item = item;x->next = next; return x;}//初始化 void STinit(int max){ int i ; N = 0; M = max / 5; heads = (link *)malloc(M*sizeof(link)); z = NEW(NULLitem,NULL); for(i=0;i
item); if(h==z)return NULLitem; if(v==t) return h->item; return searchR(h->next,v);}//搜索主程序 Item STsearch(Key v){ return searchR(heads[hash(v,M)],v);}//插入主程序 void STinsert(Item item){ int i = hash(key(item),M) ; heads[i] = NEW(item,heads[i]); N++;}//单链表删除指定的节点 非递归 link deleteT(link head,Item v){ link node1=head; link node2=NULL; if (head==NULL)return NULL; if (node1->item.key==v.key){ head=head->next; free(node1); return head; } while (node1!=NULL){ node2=node1; node2=node2->next; if (node2->item.key==v.key){ node1->next=node2->next; free(node2); break; } node1=node1->next; } return head;}//单链表删除指定的节点 递归 link deleteR(link h,Item item){ if(h==NULL)return NULL; if(key(h->item) == key(item))return h->next; h->next = deleteR(h->next,item); return h;}void STdelete(Item item){ int i = hash(key(item),M) ; heads[i] = deleteR(heads[i],item);}void p(link h){ link t = h; while(t!=NULL){ printf("%c ",key(t->item)); t = t->next; } printf("\n"); }main(){ STinit(26); struct Item item[13] ={'a','s','e','r','c','h','i','n','g','x','m','p','l'}; int i; for(i = 0; i<13;i++) STinsert(item[i]); for(i = 0; i
执行结果

转载于:https://www.cnblogs.com/claireyuancy/p/7087240.html

你可能感兴趣的文章
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
HTML+CSS学习笔记(九)
查看>>
【BZOJ2286】【SDOI2011】消耗战 [虚树][树形DP]
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
rsync
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
hihoCoder #1831 : 80 Days-RMQ (ACM/ICPC 2018亚洲区预选赛北京赛站网络赛)
查看>>
图片等比例缩放及图片上下剧中
查看>>
WebView加载网页详情
查看>>
【转载】Linux screen 命令详解
查看>>
dd命令 建立两颗一模一样的磁盘
查看>>
常用的jquery触屏手机页面特效代码下载
查看>>
background-clip,background-origin
查看>>
C# 如何创建一个Windows服务
查看>>