`
ackerman
  • 浏览: 75099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

The C Programming Lang (K&R) hash table

 
阅读更多

hash.h

#include <stdio.h>
#define    HASHSIZE 101

struct nlist {
        struct nlist *next;
        char *name;
        char *defn;
};

unsigned hash(char *s);
struct nlist *lookup(char *s);
struct nlist *install(char *name, char *defn);
 

hash.c

#include <string.h>
#include "hash.h"

static struct nlist *hashtab[HASHSIZE];

unsigned hash(char *s)
{
        unsigned hashval;

        for (hashval = 0; *s != '\0'; s++)
                hashval = *s + 31 * hashval;
        return hashval % HASHSIZE;
}

struct nlist *lookup(char *s)
{
        struct nlist *np;

        for (np = hashtab[hash(s)]; np != NULL; np = np->next)
                if (strcmp(s, np->name) == 0)
                        return np;
        return NULL;
}

struct nlist *install(char *name, char *defn)
{
        struct nlist *np;
        unsigned hashval;

        if ((np = lookup(name)) == NULL) {
                np = (struct nlist *)malloc(sizeof(struct nlist));
                if (np == NULL || (np->name = strdup(name)) == NULL)
                        return NULL;
                hashval = hash(name);
                np->next = hashtab[hashval];
                hashtab[hashval] = np;
        } else
                free((void *)np->defn);
        if ((np->defn = strdup(defn)) == NULL)
                return NULL;
        return np;
}
 
分享到:
评论

相关推荐

    The Joys of Hashing: Hash Table Programming with C

    Build working implementations of hash tables, written in the C programming language. This book starts with simple first attempts devoid of collision resolution strategies, and moves through ...

    c语言hash table的实现

    根据提供的文件信息,我们可以深入分析C语言中哈希表(Hash Table)的实现方式与具体细节。本篇文章将从以下几个方面展开讨论: 1. **哈希表的基本概念** 2. **哈希函数的设计** 3. **哈希表的创建与管理** 4. **...

    hash table spell checking

    For the misspelled word "acr", replacing the "c" with an "i" yields "air", replacing the "r" with an "e" yields "ace", and so on. • Inserting any letter at any position in a word The program ...

    SSD 5 hash table

    Sorting Hash Table Increase Sorting Searching Elementd in hash table BSTree

    前端大厂最新面试题-hash-table.docx

    本文档收集了前端大厂最新面试题的 Hash Table 相关知识点,涵盖 Hash Table 的基本概念、 ハッシュ関数、 Collision 解决方法、Hash Table 的实现和应用等方面。 一、Hash Table 基本概念 * Hash Table 是一种...

    Object-C语言教程&案例&相关项目资源

    Objective-C是一种通用且面向对象的编程语言,它在C语言的基础上增加了面向对象的功能。这种语言最初由Brad Cox和Tom Love在20世纪80年代初期开发,并随后被苹果公司采用,成为iOS和macOS应用程序的主要开发语言之一...

    hash table

    方便地查看文件的MD5/SHA1值 – HashTab给文件属性窗口添加校验值!

    c++中hash_table以及std::map应用案例

    代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...

    fpga-hash-table-master.zip_Table_fpga hash table_hash_hash fpga_

    "FPGA-based hash table"是指利用FPGA的特性实现的哈希表数据结构。哈希表是一种高效的数据存储和检索结构,它通过将关键字映射到数组的特定位置来快速查找、插入和删除数据。 哈希表的核心是哈希函数,它将输入的...

    u_hash_table.rar_Table For Two

    在“u_hash_table.c”和“u_hash_table.h”这两个文件中,我们可以预见到源代码实现了一个名为“u_hash_table”的哈希表结构。`.c`文件通常包含实际的函数实现,而`.h`文件是头文件,包含了函数声明、数据结构定义和...

    SAS Hash Object Programming

    Hash programming in SAS. to show you how hash objects in SAS DATA steps can be used to lookup data, combine data, and organize data. After reading the discussions and trying the examples, you should ...

    C语言实现hash算法

    在IT领域,哈希算法(Hash Algorithm)是一种用于将任意长度的数据转化为固定长度输出的算法。这个过程通常称为哈希或散列。哈希算法在信息安全、数据完整性验证、密码学等多个方面都有着广泛的应用。本项目是用...

    哈希表Hash table 用于哈希表等的 C 宏

    `uthash`是一个开源的C宏库,专门用于简化哈希表的实现,它提供了高效且易于使用的接口,使程序员能够快速构建自己的哈希表结构。 哈希表的关键组成部分包括哈希函数、冲突解决策略和存储结构。哈希函数负责将键...

    . In hash table, to complete the code for Insert_Hash,

    在本实验中,主要涉及了哈希表(Hash Table)这一数据结构的使用,目的是让学生了解哈希表的概念、不同的哈希方式以及如何在程序中应用哈希表进行员工信息的搜索。实验环境包括Windows XP操作系统和VC++ 6.0/WinTC...

    c语言hash表源码

    哈希表(Hash Table)是一种数据结构,它通过计算一个关联数组中的索引来确定一个特定元素的存储位置,使得在平均情况下,查找、插入和删除操作的时间复杂度达到O(1)。C语言中的哈希表实现是程序员常用的数据结构...

    glib hash table

    GLib哈希表还提供了`g_hash_table_remove()`、`g_hash_table_steal()`等方法来删除或移除键值对,以及`g_hash_table_contains()`检查键是否存在。 4. **遍历哈希表** GLib提供迭代器来遍历哈希表的所有键值对,如`...

    Hash table

    this is a hash table using hash function

    用C语言实现一个简单的哈希表(hash table)

    - 在这个C语言实现中,哈希函数可能是一个简单的模运算,例如`hash(key) = key % size`,其中`size`是哈希表的大小。 3. **冲突解决:链地址法**: - 链地址法是为每个数组元素创建一个链表,当新键映射到已有的...

    Linear Hash Table (C++ Implementation)

    现行哈希的C++实现代码,具体原理可以参考:Larson, Per-Ake (April 1988),"Dynamic Hash Tables",Communications of the ACM 31: 446–457, doi:10.1145/42404.42410.

    JAVA-hash-table.zip_Table_hash_hash table java_java hash 查找_哈希表设

    (1) 建立一个哈希表,哈希函数为除留余数法,处理冲突的方法为线性探测再散列或二次探测再散列。 (2) 往哈希表中依次存入插入多个单词。 (3) 显示哈希表的存储情况。 (4) 计算哈希表的平均查找长度。...

Global site tag (gtag.js) - Google Analytics