博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashTable 解决碰撞(冲突)的方法 —— 分离链接法(separate chaining)
阅读量:5079 次
发布时间:2019-06-12

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

1. ListNode 及 HashTable 的类型声明

  • 声明

    typedef int ElementType;typedef unsigned int Index;struct ListNode;typedef struct ListNode* Position;struct HashTbl;typedef struct HashTbl* HashTable;HashTable InitHashTable(int TableSize);void DestroyHashTable(HashTable H);Position Find(ElementType Element, HashTable H);void Insert(ElementType Element, HashTable H);;ElementType Retrieve(Position P);
  • 定义

    struct ListNode{    ElementType Element;    Position Next;  };typedef Position List;struct HashTbl {    int TableSize;    List* TheLists; };

2. HashTable 的构建

HashTable InitHashTable(int TableSize){    HashTable H;    if (TableSize < MinTableSize){        Error(" ... ");        return NULL;    }    H = (HashTable)malloc(sizeof(struct HashTbl));    if (!H)        FatalError("out of space !!!");    H->TableSize = NextPrime(TableSize);    H->TheLists = (List*)malloc(sizeof(struct ListNode)*H->TableSize);    for (int i = 0; i < H->TableSize; ++i){        H->TheLists[i] = (List)malloc(sizeof(struct ListNode));        if (!H->TheLists[i])            FatalError("");        else            H->TheLists[i]->Next = NULL;    }}

3. 插入新的结点

void Insert(ElementType Key, HashTable H){    Position Pos, NewCell;    List L;    Pos = Find(key, H);    if (!Pos){        NewCell = (Position)malloc(sizeof(struct ListNode));        if (!NewCell)            FatalError("");        L = H->TheLists[Hash(Key, H->TableSize)];        NewCell->Next = L->Next;                                    // 插入在首部        NewCell->Element = Key;        L->Next = NewCell->Next;    }}

转载于:https://www.cnblogs.com/mtcnn/p/9423655.html

你可能感兴趣的文章
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
python的列表与shell的数组
查看>>
关于TFS2010使用常见问题
查看>>
软件工程团队作业3
查看>>
python标准库——queue模块 的queue类(单向队列)
查看>>
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
深入理解JVM读书笔记--字节码执行引擎
查看>>
vue-搜索功能-实时监听搜索框的输入,N毫秒请求一次数据
查看>>
批处理 windows 服务的安装与卸载
查看>>
React文档翻译 (快速入门)
查看>>