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

快速搭建个人网站/最近新闻今日头条

快速搭建个人网站,最近新闻今日头条,动态网站与建设实训心得体会,门户建设网站方案近期刷Leetcode发现凡是找字符串中反复字符或者数组中找反复数据的时候就不知道从何下手了。所以决定学习一下哈希表解题。哈希表的原理主要是解决分类问题,hash表是介于链表和二叉树之间的一种中间结构。链表使用十分方便,可是数据查找十分麻烦&#xf…

  近期刷Leetcode发现凡是找字符串中反复字符或者数组中找反复数据的时候就不知道从何下手了。


  所以决定学习一下哈希表解题。哈希表的原理主要是解决分类问题,hash表是介于链表和二叉树之间的一种中间结构。

链表使用十分方便,可是数据查找十分麻烦;二叉树中的数据严格有序,可是这是以多一个指针作为代价的结果。hash表既满足了数据的查找方便,同一时候不占用太多的内容空间。使用也十分方便。
  定义hash数据结构,我採用的解决冲突的方法是分离链接法。
  这里写图片描写叙述

//单链表结构
typedef struct listnode* position;
typedef struct listnode* list;
struct listnode{ElementType data;position next;
};
//hash表结构
typedef struct hashtbl*  hashtable;
struct hashtbl {int tablesize;list *thelists;
};

哈希散列函数index = key%tablesize

index HashFunc(const ElementType key,int tablesize)
{//unsigned int hashval = 0;//while(*key != '\0')   //hashval = (hashval << 5) + *key++;//return hashval % tablesize;return key % tablesize;
}

创建hash表,并初始化

hashtable InitializeHashTable(int tablesize)
{hashtable H;H = (hashtable)malloc(sizeof(hashtable));if(NULL == H) return NULL;H->tablesize = tablesize;H->thelists = (list*)malloc(sizeof(list) * H->tablesize);int i = 0;for(i=0;i<H->tablesize;i++)//链表是有表头的单链表{H->thelists[i] = (list)malloc(sizeof(struct listnode));H->thelists[i]->next = NULL;}return H;
}

删除hash表

void DeleteHashTable(hashtable H)
{position P,tem;int i = 0;for(i=0;i<H->tablesize;i++){P = H->thelists[i]->next;while(P != NULL){tem = P;free(tem);P=P->next;}}free(H->thelists);free(H);
}

往hash表中插入新元素

position Find(ElementType key,hashtable H)
{position P;list L;L = H->thelists[ HashFunc( key, H->tablesize) ];P = L->next;while(P != NULL && P->data != key)P = P->next;return P;
}void Insert(ElementType key,hashtable H)
{position pos,newnode;list L;pos = Find(key,H);if(pos == NULL){newnode = (position)malloc(sizeof(position));L = H->thelists[ HashFunc( key, H->tablesize) ];newnode->data = key;newnode->next = L->next;L->next = newnode;}
}

打印hash表中全部的元素

void PrintHashTable(hashtable H)
{position P;int i = 0;for(i=0;i<H->tablesize;i++){P = H->thelists[i]->next;printf("H->thelists[%d] = ",i);while(P != NULL){printf("  %d",P->data);P=P->next;}printf("\n");   }
}

測试main函数

int main()
{int num[10] = {3,45,5,64,7,9,8,3,75,75};hashtable H;H = InitializeHashTable(10);int i = 0;for(i=0;i<10;i++){   Insert(num[i],H);}PrintHashTable(H);DeleteHashTable(H);
}

头文件

#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>typedef int ElementType;
typedef unsigned int index;

測试结果。能够看到图片中散列后在hash表中一样位置的都保存下来了,形成一个链表如数据75 5 45;可是同样的数据仅仅保存一份,比方3和3,75和75
这里写图片描写叙述
这里写图片描写叙述

转载于:https://www.cnblogs.com/zsychanpin/p/7298589.html

http://www.jmfq.cn/news/4980421.html

相关文章:

  • 建设服装网站的亮点/seo好学吗入门怎么学
  • 上海网站建设与设计公司/带佣金的旅游推广平台有哪些
  • 黄浦区未成年人思想道德建设网站/陕西seo公司
  • 网站收藏的链接怎么做的/东莞网站建设推广技巧
  • 百度推广包做网站吗/个人推广app的妙招
  • 做软件常用的网站有哪些软件/上海seo优化公司bwyseo
  • 网站建设中的定位设想/网站seo需要用到哪些工具
  • 访问香港网站很慢/域名查询入口
  • php建立网站/个人网站开发网
  • 阜新建设网站/网络推广网址
  • 长沙建站找有为太极就治就/什么是关键词搜索
  • b2b平台怎么做/百度人工优化
  • 网站制作现在赚钱么/广告营销策划方案模板
  • 代做网站的公司/2345系统导航
  • 万户网络做网站/百度一下子就知道了
  • 免费申请三级域名网站/长沙疫情最新数据消息
  • wordpress幻灯片教程/找索引擎seo
  • 如何建立小企业网站/华为手机软文范文300
  • 保定市做网站的电话/郑州网站推广效果
  • mac系统怎么卸载wordpress/南宁seo推广服务
  • 上海网站建设模版/合肥网站制作
  • 网站排名优化软件/谷歌浏览器下载手机版最新版
  • 电商无货源怎么做/东莞网络营销优化
  • 甘肃省住房与建设厅网站/2345网址导航官网下载安装
  • 做海报免费素材网站有哪些/海口网站关键词优化
  • 厦门市建设区网站/网站搜索优化技巧
  • pc网站建设的优势是什么/it培训机构排名
  • 恒一信息深圳网站建设公司1/任务放单平台
  • 淘宝客网站免费建设/南昌seo全网营销
  • 东莞网站建设定制/百度导航最新版本