哈希表的编程
来源:互联网 发布:淘宝商城化妆品专柜 编辑:程序博客网 时间:2024/04/29 05:09
#include<stdio.h>#include<malloc.h>#define keynum 32 //要存放的元素个数//哈希结点struct HashAddress{int key; //存放元素int flag; // 是否存放元素标示};//哈希表初始化void intailHash(HashAddress * wh,int n){ for(int i=0;i<n;i++) wh[i].flag=-1;}//把元素放进哈希表中//m n分别表示 哈希表长度,与元素规模通常m=2*n时,较合理//这里哈希函数为KEY%m,解决冲突办法是+1void CreatHash(HashAddress *wh,int m,int *A,int n){int place;for(int i=0;i<n;i++){ place=A[i]%m; while(wh[place].flag!=-1)//冲突 { place=(place+1)%m; } wh[place].flag=1;//元素放入哈希表 wh[place].key=A[i];}}//在长为m哈希表中找元素KEY,找到输出其地址和查找次数void FindKeyInHash(HashAddress *wh,int m,int key){int place;place=key%m;int findtime=0;while(wh[place].flag!=-1&&wh[place].key!=key){ place=(place+1)%m; findtime++; }printf("found %dth \n",findtime); if( wh[place].key==key)//找到{printf("have the key %d \n",place); return;}else if(wh[place].flag==-1)//找不到{printf("no the key!");return;}}int main(){ int num[keynum]={15,16,26,75,18,25,27,1,2,9,28,29,19,20,21,22,23,24,30,31,32,10,11,12,13,3,4,5,6,7,8,14};//测试数据 HashAddress * where=(HashAddress*)malloc(sizeof(HashAddress)*2*keynum); if(NULL==where) { printf("no memroy for hashaddress \n"); return -1; } intailHash(where,keynum*2); CreatHash(where,2*keynum,num,keynum); FindKeyInHash(where,2*keynum,75);}
- 哈希表的编程
- 编程语言的编程模型
- 初学编程--编程的趣味
- glibc中的简单的哈希表编程
- 程序员的编程、编程的程序员。
- Linux下的C编程--文件系统编程
- 编程高手是怎么学编程的
- 编程语言:扯谈编程语言的选择
- 编程语言:扯谈编程语言的选择
- 模拟购物系统的编程:C# 编程
- 编程任务(1)--达到编程的起点
- 关于Linux的视频编程(v4l2编程)
- WinPcap编程【1】--编程环境的设置
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 关于Linux的视频编程(v4l2编程)
- 揭开Socket编程的面纱-网络编程
- webrtc源码编译
- 在header跳转后使用exit
- js贪吃蛇
- 橡皮筋类(CRectTracker)
- mysql查询不重复的记录
- 哈希表的编程
- 尚观shell的学习
- Windows到Linux系统代码移植遇到的问题
- TabHost子界面跳转特效
- wince下Gpio 驱动程序
- 电压驱动和电流驱动
- 组合-砝码问题
- php 内部笔试题
- 4.4 通过命令行方式创建一个Qt4程序