分别写出在散列表中插入和删除关键字为K的一个记录的算法,设散列函数为H,解决冲突的方法为链地址法。

news/2024/11/17 6:15:31/
#include<stdbool.h>
//定义链表结构
typedef struct LNode
{int data;struct LNode* next;
}LNode,*LinkList;
//假设散列表的大小为100
#define TABLE_SIZE 100
LinkList HT[TABLE_SIZE];//散列函数
int hash(int data)
{return data % TABLE_SIZE;//所有data都会存储在0-TABLE_SIZE-1的位置里面
}void initialize_hash_table()
{//给每个链表申请空间for (int i = 0; i < TABLE_SIZE; i++){HT[i] = (LinkList)malloc(sizeof(LNode));if (HT[i] == NULL){perror("error");exit(1);}HT[i]->next = NULL;}
}//插入
bool insert(int data)
{int ant = hash(data);//拿到哈希地址LinkList p = HT[ant];//p指向这个哈希地址while (p->next)//判断HT[ant]后的data有没有跟当前的相等{if (p->next->data == data){return false;}p = p->next;}//没相等的data就插入新节点LinkList s = (LinkList)malloc(sizeof(LNode));if (s == NULL){perror("error:");return false;}s->data = data;s->next = p->next;p->next = s;return true;
}//删除函数
bool delete_key(int data)
{int ant = hash(data);LinkList p = HT[ant];while (p->next){if (p->next->data == data){LinkList s = p->next;p->next = s->next;free(s);return true;}p = p->next;}return false;
}
int main()
{//初始化链表initialize_hash_table();insert(1);insert(10);insert(20);insert(30);insert(10);//插入失败的for (int i = 0; i < 100; i++) {LinkList p = HT[i]->next;if (p != NULL) {printf("Slot %d: %d\n", i, p->data);}}printf("\n");delete_key(10);delete_key(1);for (int i = 0; i < TABLE_SIZE; i++) {LinkList p = HT[i]->next;if (p != NULL) {printf("Slot %d: %d\n", i, p->data);}}for (int i = 0; i < TABLE_SIZE; i++){free(HT[i]);}return 0;
}


http://www.ppmy.cn/news/1547652.html

相关文章

docker 镜像索引和用法

Docker 镜像索引&#xff08;Image Index&#xff09;和清单列表&#xff08;Manifest List&#xff09;是 Docker 用于管理和分发多架构镜像的关键概念。下面将详细介绍这两个概念以及它们的用法。 1. Docker 镜像索引 (Image Index) 定义: Docker 镜像索引是一个逻辑集合&…

Linux 35.6 + JetPack v5.1.4@python opencv安装

Linux 35.6 JetPack v5.1.4python opencv安装 1. 源由2. 步骤Step 1: 检查现有 OpenCV 安装路径Step 2: 编译 OpenCV 并安装Step 3: 替换现有的 OpenCVStep 4: 设置环境变量Step 5: 验证替换后的 OpenCVStep 6: 可能的其他问题 3. 验证 1. 源由 为了使得python下的opencv代码…

智能算法引领金融创新:正大科技的智能分析框架

金融行业的智能化浪潮&#xff0c;推动了算法在投资分析中的深度应用。正大科技依托智能算法&#xff0c;构建了一套涵盖数据采集、分析和优化的智能分析框架&#xff0c;帮助投资者在瞬息万变的市场中作出更明智的决策。本文将解析正大科技如何利用智能算法实现市场洞察&#…

【SQL】双层嵌套< exists not exists >

EXISTS 运算符 EXISTS 运算符用于判断查询子句是否有记录&#xff0c;如果有一条或多条记录存在返回 True&#xff0c;否则返回 False。 语法 SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);实例1 查找总访问量…

利用云计算实现高效的数据备份与恢复策略

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 利用云计算实现高效的数据备份与恢复策略 利用云计算实现高效的数据备份与恢复策略 利用云计算实现高效的数据备份与恢复策略 引…

数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)

下图所示为咱们社区T12nm A55低功耗实现项目。其实这个项目还可以根据产品的需求做一些改进。改进后项目实现的难度会大大增加。也希望通过今天的这个项目案例分享&#xff0c;帮助到今年IC秋招的同学。 芯片低功耗设计实现upf编写指南&#xff08;附低功耗项目案例&#xff0…

接上篇-使用 element-plus 优化UI界面

使用 element-plus 可以让我们更容易创建一个精美且功能丰富的UI界面。接下来&#xff0c;我们将优化 GroupManagement.vue 组件&#xff0c;使用 element-plus 的表格、按钮、对话框等组件来实现一个更专业的小组管理页面。 优化后的 GroupManagement.vue 代码 1. 安装 elem…

跳房子(弱化版)

题目描述 跳房子&#xff0c;也叫跳飞机&#xff0c;是一种世界性的儿童游戏&#xff0c;也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下&#xff1a; 在地面上确定一个起点&#xff0c;然后在起点右侧画 n 个格子&#xff0c;这些格子都在同一条直线上。每个格子内…