广工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)相关推荐

  1. 2021 广工 Anyview 数据结构第 5 章

    /********** [题目]试编写如下定义的递归函数的递归算法:g(m,n) = 0 当m=0,n>=0g(m,n) = g(m-1,2n)+n 当m>0,n>=0 ****** ...

  2. 广工Anyview数据结构2021-C语言版--第一章

    将三个整数按升序重新排列 算法思考: //首先随机比较三选二     /*     算法实现原理:     若a<b,则交换a,b,使得a>b,进而继续比较a.c,若a<c,则交换a ...

  3. 广工 AnyviewC 数据结构习题 第四章

    广工 AnyviewC 数据结构习题 第四章 广工 AnyviewC 数据结构习题 第四章 1[题目]已知某哈希表的装载因子小于1,哈希函数H(key) 2[题目]假设哈希表长为m,哈希函数为H(x) ...

  4. 广工 AnyviewC 数据结构习题 第五章

    广工 AnyviewC 数据结构习题 第五章 广工 AnyviewC 数据结构习题 第五章 1[题目]试编写如下定义的递归函数的递归算法: 2[题目]试写出求递归函数F(n)的递归算法: 3[题目]求 ...

  5. 数据库系统概念第六版 第四章练习题 12 14 18

    数据库系统概念第六版 第四章练习题 12 14 18 4.12 对于图中的数据库,写出一个查询来找到那些没有经理的雇员.注意一个雇员可能只是没有列出其经理或者可能有null经理.使用外连接书写查询,然 ...

  6. 带父节点的平衡二叉树_学习数据结构--第四章:树与二叉树(平衡二叉树)

    第四章:树与二叉树(平衡二叉树) 1.平衡二叉树 平衡二叉树:AVL,任意结点的平衡因子的绝对值不超过一. 平衡因子:左子树高度 - 右子树高度 如上图二叉树,是否是平衡二叉树? 可以把所有结点的平衡 ...

  7. c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...

    第四章:树与二叉树(二叉树的逻辑结构) 1.二叉树 二叉树是树结构的一种,故二叉树也是逻辑结构. 二叉树:二叉树是n(n≥0)个结点的有限集合. · 1)n=0时,二叉树为空; · 2)n>0时 ...

  8. 算法与数据结构 第四章 树与二叉树

    第四章树 一.选择题(20分) 1.在下述结论中,正确的是: (    ) ① 只有2个结点的树的度为1: ② 二叉树的度为2: ③ 二叉树的左右子树可任意交换: ④ 在最大堆(大顶堆)中,从根到任意 ...

  9. C语言数据结构-第四章 串-电大同步进度

    第四章 串 字符串是计算机处理的最基本的非数值数据.字符串是一种特定的线性表,其特殊性就在于组成线性表的每个元素就是一个单字符. 本章给出: l         串的基本概念 l         串的 ...

最新文章

  1. Source Insight 有用设置配置
  2. Idea开发Java WEB 应用
  3. 【控制】《自动控制原理》胡寿松老师-第4章-线性系统的根轨迹法
  4. JMeter初探四-Fiddler录制与实战
  5. 定义简单类-创建多个猫对象
  6. 对照片进行边缘化处理,并将边缘化处理后的结果保存
  7. [react] 怎么在JSX里属性可以被覆盖吗?覆盖的原则是什么?
  8. 怎么用计算机弹that girl,抖音使用教程 抖音that girl 歌曲歌词介绍
  9. Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors
  10. [USACO13JAN] Seating
  11. 服务器用户配置文件在哪里找,SharePoint Server 中的服务器到服务器身份验证和用户配置文件...
  12. 用gpg加密软件加密文件
  13. 超宽带 DWM1000模块 校准
  14. 错题合集1_JavaSE章节测试
  15. 调用第三方api在线生成二维码
  16. 字符串长度测量,大小比较
  17. 这10个实用网站/app,至少让你的效率翻一倍!
  18. pgadmin4远程连接 postgresql服务
  19. service和systemctl
  20. 2.使用Gateway实现token校验

热门文章

  1. 红米note4android,红米Note4处理器是什么型号?红米Note4处理器的具体参数和性能
  2. jmeter进行接口压力测试
  3. 有特别有创意的网站设计案例
  4. Python(x,y)安装
  5. STM32基础(11)光敏传感
  6. SD卡电平转换器 - NXS0506UP
  7. 政府网站绩效评估指标和要点
  8. 使用ASP.NET Core构建RESTful API的技术指南
  9. dizcuz手机API-mobile
  10. 基于FPGA的数据采集系统