- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构设计性实验报告
课程名称 数据结构实验■
题目名称 哈希表
学生学院_ 计算机学院
专业班级
学 号
学生姓名
指导教师
2015 年7 月2 日
1. 题目
采用哈希表为存储结构,实现抽象数据类型 HashTable 。
ADT HAS{
数据对象 D:D 是具有相同特性的数据元素的集合。
数据关系 R :根据设定的哈希函数和处理冲突的方法将一组关键字映像到一个连续的有 限地址集上,并以关键字在地址集中的“像” 作为记录在表中的存储位置, 这种表称为哈希 表。这一映像过程称为造表或散列,所得存储位置称哈希地址或散列地址。
基本操作:
TOC \o "1-5" \h \z InitHash( &H)
操作结果:初始化哈希表 H。
DestoyHash( &H)
初始条件:哈希表 H 已存在。
操作结果:销毁哈希表 H。
CreateHash(&H)
初始条件:哈希表 H 已存在。 操作结果:构造哈希表 H。
SearchHash(H)
初始条件:哈希表已存在。 操作结果:查找哈希表 H 中元素。
InsertHash(&H)
初始条件:哈希表 H 已存在。 操作结果:插入元素到哈希表
DeleteHash( &H, key, & e) 初始条件:哈希表已存在且非空。
操作结果:删除H的第i个元素,并用e返回其值,H的长度减1。
} ADT List
3. 算法设计
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<time.h>
#define random(x) (rand()%x)
#define OK 1
#define SUCCESS 1
#define UNSUCCESS 0
#define DUPLICAPE -1
#define OVERFLOW 0
typedef int KeyType;
typedef int Status;
typedef struct {
KeyType key;
int tag;
}RecordrdType, RcdType;
typedef struct {
RcdType *rcd;
int size;
int count;
}HashTable;
int InitHash(HashTable *H, int size){ // 初始化哈希表 int i;
H->rcd=(RcdType*)malloc(size*sizeof(RcdType)); if(NULL==H ->rcd)return OVERFLOW;
for(i=0;i<=size;i++)H ->rcd[i].tag=0;
H->size=size;
H->count=0;
return OK;
}
int DestoyHash(HashTable *H)// 销毁哈希表
{
free(H ->rcd);
H->rcd=NULL;
H->count=0;
H->size=0;
return OK;
}
int SearchHash(HashTable H, KeyType key , int &p,int &c ){ //查找哈希表
c=0;
p=key%H.size;// 求得哈希地址
-1==H.rcd[p].tag)){while(H.rcd[p].tag!=0&&(H.rcd[p].key!=key|| p=(p+1)%H.size;c++;
-1==H.rcd[p].tag)){
}// 求得下一探测地址 if(H.rcd[p].key==key)return SUCCESS; else return UNSUCCESS;
int InsertHash(HashTable *H, RcdType e){// 哈希表的插入
int c=0,j;
if(SUCCESS==SearchHash(*H,e.key,j,c))
return -1;
else {
H ->rcd[j]=e;H ->rcd[j].tag=1;++H ->count;
return c;
}
}
int DeleteHash(HashTable *H,KeyType key,RcdType e){ //哈希表的删除 int j,c;
if(UNSUCCESS==SearchHash(*H,key,j,c))
return UNSUCCESS;
else {
e=H->rcd[j];
H->rcd[j].tag= -1;
H->count --;
return SUCCESS;
}
}
void display(HashTable *H){
printf("\n 哈希表数据 :");
fo
1亿VIP精品文档
相关文档
最近下载
- 《马克思主义基本原理概论》3-2生产力与生产关系.ppt VIP
- 城中村改造策略研究—以广州市荔湾区海北村为例.pdf VIP
- 专题一+中国古代政治制度+课件--2024届高考统编版历史二轮复习.pptx VIP
- 做新时代合格共产党员培训课件.pptx VIP
- AQ 4273-2016粉尘爆炸危险场所用除尘系统安全 技术规范.pdf
- 《10的分解与组成》(幼儿园PPT课件).pptx VIP
- 2019年学院党建研究课题申请书(确定3).doc VIP
- 幼儿园课件:2-中班:我不怕黑.pptx
- 我国台湾地区自然科学领域核心素养的内涵分析及启示.docx
- (最新)湘教版小学六年级下册美术期末考试题.pdf
文档评论(0)