广工anyview数据结构第四章(2021.12)
广工anyview数据结构习题第四章,
在学习过程中部分题目参考了Giyn 、戮漠、雁过留痕等大佬的代码,在此感谢。
题目解法不是最优解,但希望能给大家有所启发。同时也发了文档资源,需要可自取。
目录
DC04PE04
DC04PE15
DC04PE04
【题目】已知某哈希表的装载因子小于1,哈希函数H(key)为关键字(标识符)的第一个字母在字母表中的序号,处理冲突的方法为线性探测开放定址法。试编写一个按第一个字母的顺序输出哈希表中所有关键字的算法。哈希表的类型HashTable定义如下∶
#define SuCCESS1
#define UNSUCCESS 0
#define DUPLICATE -1
typedef char StrKeyType[4];
typedef struct {
StrKeyType key;// 关键字项
int tag; //标记 0∶空; 1∶有效; -1∶己删除
void *any; //其他信息
}RcdType2;
typedef struct {
RcdType2 *rcd; //存储空间基址
int size; // 哈希表容量
int Count; //表中当前记录个数
}HashTable;
实现下列函数∶
void PrintKeys(HashTable ht,void(*print)(StrKeyType));
/* 依题意用print输出关键字*/
#include "allinclude.h" //DO NOT edit this line
void PrintKeys(HashTable ht, void(*print)(StrKeyType)){
/* 请调用形参中的print函数输出关键字 */int i,j=0,num,tem;
StrKeyType temp[ht.count];for(i=0;i<ht.size;i++){if(ht.rcd[i].tag==1)strcpy(temp[j++],ht.rcd[i].key);}num=j;
StrKeyType s;
for(i=1;i<num;i++){ tem=i-1;for(j=i;j<num;j++){if(temp[j][0]<temp[tem][0])tem=j;}if(tem!=i-1){strcpy(s,temp[i-1]);strcpy(temp[i-1],temp[tem]);strcpy(temp[tem],s); }}for(i=0;i<num;i++)print(temp[i]);}
DC04PE15
【题目】假设哈希表长为m,哈希函数为H(x),用链地址法处理冲突。试编写输入一组关键字并建造哈希表的算法。哈希表的类型ChainHashTab定义如下∶
#define NUM 7
#define NULLKEY -1
#define SUCCESS 1
#define UNSUCCESS 0
#define DUPLICATE -1
typedef char HKeyType;
typedef struct HNode {
HKeyType data;
struct HNode* next;
}*HLink;
typedef struct {
HLink *rcd;//指针存储基址,动态分配数组
int count; // 当前表中含有的记录个数
int size; // 哈希表的当前容量
}ChainHashTab;//链地址哈希表
/*以下函数可以直接调用*/
int Hash(ChainHashTab H,HKeyType k){ //哈希函数
return k %H.size;
}
Status Collision(ChainHashTab H,HLink &p){
//求得下一个探查地址p
if (p && p->next){
p= p->next;
return SUCCESS;
} else return UNSUCCESS;
}
实现下列函数∶
int BuildHashTab(ChainHashTab &H,int n,HKeyType es[ ]);/* 下列函数可以直按调用
/*哈希函数∶*/
/*int Hash(ChainHashTab H,HKeyType k); */
/*冲突处理函数∶ */
/*int Collision(ChainHashTab H,HLink &p); */
#include "allinclude.h" //DO NOT edit this line
int BuildHashTab(ChainHashTab &H, int n, HKeyType es[])
{ // Add your code hereint i,num,stat;HLink temp;if(n==0)return UNSUCCESS;//初始化 H.rcd = (HLink*)malloc(H.size * sizeof(HLink));H.count = 0;for (i = 0; i < H.size; i++){H.rcd[i] = NULL;}for (i = 0; i < n; i++){ stat=UNSUCCESS;num = Hash(H, es[i]); //哈希地址temp = H.rcd[num]; //链表头位置if(temp!=NULL){ //搜索哈希地址对应链表for (stat=SUCCESS;stat==SUCCESS;stat = Collision(H,temp)) {if (temp->data == es[i]) //元素已经在链表中{ H.count++; break;}} } if(stat==UNSUCCESS) //整个链表搜索完毕,找不到{temp= (HNode*)malloc(sizeof(HNode)); //在表头创建结点 temp->data = es[i];temp->next = H.rcd[num];H.rcd[num]=temp;H.count++; } }return SUCCESS;
}
广工anyview数据结构第四章(2021.12)相关推荐
- 2021 广工 Anyview 数据结构第 5 章
/********** [题目]试编写如下定义的递归函数的递归算法:g(m,n) = 0 当m=0,n>=0g(m,n) = g(m-1,2n)+n 当m>0,n>=0 ****** ...
- 广工Anyview数据结构2021-C语言版--第一章
将三个整数按升序重新排列 算法思考: //首先随机比较三选二 /* 算法实现原理: 若a<b,则交换a,b,使得a>b,进而继续比较a.c,若a<c,则交换a ...
- 广工 AnyviewC 数据结构习题 第四章
广工 AnyviewC 数据结构习题 第四章 广工 AnyviewC 数据结构习题 第四章 1[题目]已知某哈希表的装载因子小于1,哈希函数H(key) 2[题目]假设哈希表长为m,哈希函数为H(x) ...
- 广工 AnyviewC 数据结构习题 第五章
广工 AnyviewC 数据结构习题 第五章 广工 AnyviewC 数据结构习题 第五章 1[题目]试编写如下定义的递归函数的递归算法: 2[题目]试写出求递归函数F(n)的递归算法: 3[题目]求 ...
- 数据库系统概念第六版 第四章练习题 12 14 18
数据库系统概念第六版 第四章练习题 12 14 18 4.12 对于图中的数据库,写出一个查询来找到那些没有经理的雇员.注意一个雇员可能只是没有列出其经理或者可能有null经理.使用外连接书写查询,然 ...
- 带父节点的平衡二叉树_学习数据结构--第四章:树与二叉树(平衡二叉树)
第四章:树与二叉树(平衡二叉树) 1.平衡二叉树 平衡二叉树:AVL,任意结点的平衡因子的绝对值不超过一. 平衡因子:左子树高度 - 右子树高度 如上图二叉树,是否是平衡二叉树? 可以把所有结点的平衡 ...
- c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...
第四章:树与二叉树(二叉树的逻辑结构) 1.二叉树 二叉树是树结构的一种,故二叉树也是逻辑结构. 二叉树:二叉树是n(n≥0)个结点的有限集合. · 1)n=0时,二叉树为空; · 2)n>0时 ...
- 算法与数据结构 第四章 树与二叉树
第四章树 一.选择题(20分) 1.在下述结论中,正确的是: ( ) ① 只有2个结点的树的度为1: ② 二叉树的度为2: ③ 二叉树的左右子树可任意交换: ④ 在最大堆(大顶堆)中,从根到任意 ...
- C语言数据结构-第四章 串-电大同步进度
第四章 串 字符串是计算机处理的最基本的非数值数据.字符串是一种特定的线性表,其特殊性就在于组成线性表的每个元素就是一个单字符. 本章给出: l 串的基本概念 l 串的 ...
最新文章
- Source Insight 有用设置配置
- Idea开发Java WEB 应用
- 【控制】《自动控制原理》胡寿松老师-第4章-线性系统的根轨迹法
- JMeter初探四-Fiddler录制与实战
- 定义简单类-创建多个猫对象
- 对照片进行边缘化处理,并将边缘化处理后的结果保存
- [react] 怎么在JSX里属性可以被覆盖吗?覆盖的原则是什么?
- 怎么用计算机弹that girl,抖音使用教程 抖音that girl 歌曲歌词介绍
- Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors
- [USACO13JAN] Seating
- 服务器用户配置文件在哪里找,SharePoint Server 中的服务器到服务器身份验证和用户配置文件...
- 用gpg加密软件加密文件
- 超宽带 DWM1000模块 校准
- 错题合集1_JavaSE章节测试
- 调用第三方api在线生成二维码
- 字符串长度测量,大小比较
- 这10个实用网站/app,至少让你的效率翻一倍!
- pgadmin4远程连接 postgresql服务
- service和systemctl
- 2.使用Gateway实现token校验