哈利波特(统计词频)——分离链接法(散列查找)

分离链接法实现:

散列查找——分离链接法_f-f-g的博客-CSDN博客

一、完整代码:

//词频统计——哈利波特

//使用分离链接法

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
#include<math.h>

/*--------分离链接法的结构声明----------*/ 

#define KeyLength 15//关键词字符串的最大长度
#define MaxWordLen 80//所以单词的最大长度 
typedef char ElementType[KeyLength+1];//关键词类型用字符串
typedef int Index;//散列地址类型

/*-----------单链表定义-------------*/ 
typedef struct LNode *PtrToLNode; 
struct LNode{
    ElementType Data;
    PtrToLNode Next;
    int Count;//记录单词出现的次数 
};
typedef PtrToLNode Position;
typedef PtrToLNode List;

/*-------------散列表定义-----------------*/
typedef struct TblNode *HashTable;
struct TblNode{
    int TableSize;//表的最大长度 
    List Heads; //指向链表头结点的数组 
};

int Prime(int N)
{
    //返回小于等于N的最大素数
    int i,p;
    if(N>=1&&N<=3)p=N;
    else p=(N%2)?N:N-1;//取奇数 
    while(p<=N&&p>4){
        for(i=(int)sqrt(p);i>2;i--)
            if(!(p%i))break;//p不是素数
        if(i==2)break;//p是素数
        else p-=2; 
    } 
    return p;
}
/*-------------创建-----------------*/
HashTable CreateTable(int TableSize)
{
    HashTable H;
    int i;
    H=(HashTable)malloc(sizeof(struct TblNode)) ;
    //保证散列表最大长度是素数 
    H->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值