散列(Hashing)的基本思想:
1.计算位置:构造散列函数确定关键词存储位置。
2.解决冲突:应用某种策略解决多个关键词位置相同的问题。
完整代码如下:
如下程序实现统计打电话次数最多的人
输入:通话记录的条数N。接下来输入N条记录,每条记录含有两个电话号码。
冲突解决办法:分离链接法。
散列函数:除留余数法。
//查找打电话最多的人
//冲突处理的方法:分离链接法
//哈希函数:出留余数法
//#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
const int MAXD = 5; //取电话后5位为key
const int KEYLENGTH = 11; //电话号码的长度
const int MAXTABLESIZE = 10000; //允许开辟的最大散列表长度
//链表节点定义
struct LNode
{
char Data[KEYLENGTH + 1]; //数据域
struct LNode* Next;