当前位置: 首页 > news >正文

网站建设与维护典型案例漳州seo网站快速排名

网站建设与维护典型案例,漳州seo网站快速排名,做网站用windows还是mac,宁晋做网站上一章,简单介绍了Hash Table,并提出了本教程中要实现的几个Hash Table的方法,有search(a, k)、insert(a, k, v)和delete(a, k),本章将介绍Hash table使用的数据结构。 Hash table数据结构 hash表中存储的每一项key-value的数据…

上一章,简单介绍了Hash Table,并提出了本教程中要实现的几个Hash Table的方法,有search(a, k)insert(a, k, v)delete(a, k),本章将介绍Hash table使用的数据结构。

Hash table数据结构

hash表中存储的每一项key-value的数据结构:

 

// hash_table.h
typedef struct {char* key;char* value;
} ht_item;

我们的hash表中保存着一个指向每一项的指针数组,里面还包括hash表的大小,结构如下:

 

// hash_table.h
typedef struct {int size;int count;ht_item** items;
} ht_hash_table;

初始化与删除

hash表中,我们需要定义一个函数来初始化一条记录(ht_item),这个函数会为每一条记录(ht_item)申请内存,然后将kv保存在这个内存中。为了让该函数只能在我们的hash table中使用,我们用static来修饰。

 

// hash_table.c
#include <stdlib.h>
#include <string.h>#include "hash_table.h"static ht_item* ht_new_item(const char* k, const char* v) {ht_item* i = malloc(sizeof(ht_item));i->key = strdup(k);  // 复制操作i->value = strdup(v);return i;
}

ht_new初始化一个新的hash表size表示这个hash表可以存储多少条记录,现在是固定的53条。我们将在后面讲解如何扩充这个hash表,我们使用calloc函数来初始化一条记录(如果对calloc不熟悉,可以看看我这篇文章:https://blog.csdn.net/u013184273/article/details/103766521),calloc会申请一片空间并用NULL来填充,记录为NULL就代表空的。

 

// hash_table.c
ht_hash_table* ht_new() {ht_hash_table* ht = malloc(sizeof(ht_hash_table));ht->size = 53;ht->count = 0;ht->items = calloc((size_t)ht->size, sizeof(ht_item*));return ht;
}

我们还需要额外的函数来删除ht_itemht_hash_table,这个函数会释放(free)我们之前申请的内存空间,以至于不会造成内存泄漏:

 

// hash_table.c
static void ht_del_item(ht_item* i) {free(i->key);free(I->value);free(i);
}void ht_delete_hash_table(ht_hash_table* ht) {for (int i = 0; i < ht->size; ++i) {ht_item* item = ht_items[I];if (item != NULL) {ht_del_item(item);}}free(ht->items);free(ht);
}

现在,我们已经完成定义一个hash表,现在我们可以试着创建一个hash表并试着销毁它,尽管现在并没有做太多东西。

 

// main.c
#include hash_table.hint main() {ht_hash_table* ht = ht_new();ht_del_hash_table(ht);
}


著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.wooajung.com/news/33837.html

相关文章:

  • WordPress网站被恶意登录网络培训心得体会
  • 如何建立动态网站软文推广做得比较好的推广平台
  • 软件下载网站制作手机广告推广软件
  • 半成品代加工接订单平台seo排名培训
  • tp5网站开发逻辑架构百度seo指南
  • 宝安网站建设哪家便宜东莞seo优化排名推广
  • 婚纱摄影网站的设计南召seo快速排名价格
  • 宣威做网站推广的公司网站排名优化服务公司
  • 手机网站抢拍是怎么做的列举五种网络营销模式
  • 设立网站泉州网站seo公司
  • 手机号码定位网站开发最快的新闻发布平台
  • 定制家具网站建设哪里有正规的电商培训班
  • 衡水做阿里巴巴网站最近的新闻热点
  • 网络平台推广员谷歌seo工具
  • 做葡萄牙语网站成都疫情最新消息
  • 莱芜论坛杂谈网站关键词排名优化系统
  • 比较好的网站开发教学网站网站推广的主要方式
  • cnc强力磁盘 东莞网站建设可口可乐网络营销策划方案
  • 山东外贸建站网络公关公司联系方式
  • 工业设计灵感网站新网站怎么做优化
  • 安徽建站公司泉州搜索推广
  • 中信建设有限责任公司官网招聘信息广州百度网站排名优化
  • 文档流程做网站网络优化公司有哪些
  • c 做网站需要什么知识seo推广优势
  • 网站后台ftp替换图片怎么做aso优化排名推广
  • 扬中论坛网官网seo网站优化专家
  • 营销优化型网站怎么做办公软件培训
  • 网站开发 微信 支付如何制作一个网页
  • 网站设计人员就业要求谷歌seo外链
  • 小学门户网站建设情况汇报seo站外优化平台