23、数据结构/查找相关练习20240205

news2025/1/12 3:48:11

一、请编程实现哈希表的创建存储数组{12,24,234,234,23,234,23},输入key查找的值,实现查找功能。

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<math.h>
typedef struct Node
{
	int data;
	struct node *next;
}*list;
int max_prime(int m)
{
	int i=m;
	for(i;i>1;i--)
	{
		int flag=0;
		for(int j=2;j<=sqrt(i);j++)
		{
			if(i%j==0)
			{
				flag=-1;
				break;
			}
		}
		if(flag==0)
			return i;
	}
}
list create_node()
{
	list s=(list)malloc(sizeof(struct Node));
	if(NULL==s)
		return NULL;
	s->data=0;
	s->next=NULL;
	return s;
}
void insert_hash(int arr,int p,list hash[])
{
	int value=arr%p;
	list s=create_node();
	s->data=arr;
	if(NULL==hash[value])
	{
		hash[value]=s;
	}
	else
	{
		s->next=hash[value];
		hash[value]=s;
	}
}
void output_hash(list hash[],int m)
{
	for(int i=0;i<m;i++)
	{
		list p=hash[i];
		printf("%d: ",i);
		while(p){
		printf("%d ",p->data);
		p=p->next;
		}
		puts("end");
	}
}
int search_hash(list hash[],int p,int key)
{
	int value=key%p;
	list head=hash[value];
	while(head)
	{
		if(head->data==key)
			return 0;
		head=head->next;
	}
	return -1;
}
int main(int argc, const char *argv[])
{
	int arr[]={12,24,234,234,23,234,23};
	int len=sizeof(arr)/sizeof(arr[0]);
	int m=len*4/3;//哈希表长
	list hash[m];
	for(int i=0;i<m;i++)
	{
		hash[i]=NULL;
	}
	int p=max_prime(m);//计算不大于m的最大质数
	for(int i=0;i<len;i++)
	{
		insert_hash(arr[i],p,hash);//循环输入数组元素存入哈希表;
	}
	output_hash(hash,m);//输出哈希表;

	int key;
	printf("please enter search key:");
	scanf("%d",&key);
	int flag=search_hash(hash,p,key);//根据输入的值查找
	if(flag==0)
		puts("exists");
	else
		puts("unexists");

	return 0;
}

运行:

二、 现有数组{12,23,45,56,445,5676,6888},请输入key实现二分查找。

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
enum BISE
{
	SUCCESS,
	FAILURE
};
int binary_search(int *p,int len,int key)
{
	int low=0,high=len-1;
	while(low<=high)
	{
		int mid=(low+high)/2;
		if(*(p+mid)<key)
		{
			low=mid+1;
		}
		else if(*(p+mid)==key)
		{
			return SUCCESS;
		}
		else if(*(p+mid)>key)
		{
			high=mid-1;
		}
	}
	return FAILURE;
}
int main(int argc, const char *argv[])
{
	int arr[]={12,23,45,56,445,5676,6888};
	int len=sizeof(arr)/sizeof(arr[0]);
	int key;
	printf("please enter search key:");
	scanf("%d",&key);
	int flag=binary_search(arr,len,key);
	if(flag==SUCCESS)
		puts("exists");
	else
		puts("unexists");

	return 0;
}

代码运行:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1435787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.0 Zookeeper 分布式配置服务教程

ZooKeeper 是 Apache 软件基金会的一个软件项目&#xff0c;它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper 的架构通过冗余服务实现高可用性。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高…

Leetcode24:两两交换链表中的节点

一、题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff…

JVM 性能调优- Java 中的五种内存溢出(5)

在介绍之前先简单介绍下 直接内存(Direct Memory)和堆内存(Heap Memory): 关系: 直接内存并不是Java虚拟机的一部分,它是通过Java的NIO库中的ByteBuffer来分配和管理的。直接内存通常由操作系统的本地内存(Native Memory)提供支持。堆内存是Java虚拟机的一部分,用于存…

杨中科 ASP.NETCORE 高级14 SignalR

1、什么是websocket、SignalR 服务器向客户端发送数据 1、需求&#xff1a;Web聊天;站内沟通。 2、传统HTTP&#xff1a;只能客户端主动发送请求 3、传统方案&#xff1a;长轮询&#xff08;Long Polling&#xff09;。缺点是&#xff1f;&#xff08;1.客户端发送请求后&…

单片机的了解与主流型号有哪些?

单片机是一种集成电路芯片&#xff0c;采用超大规模集成电路技术将具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计数器等功能集成到一块硅片上&#xff0c;构成一个微型计算机系统。单片机广泛应用于工业控制领域&#…

四、树立边界(Negotiating Boundaries)

2.Negotiating Boundaries 二、协商边界 Other people are the biggest obstacles of focus.A colleague wants to chat.You get a WeChat message about that party tonight.You hear the familiar ping of new emails that demand a look. 他人是保持专注的最大障碍。同事想要…

Java TreeSet 添加自定义对象 必须指定排序规则

Java TreeSet 添加自定义对象 必须指定排序规则 package com.zhong.collection.set;import java.util.Comparator; import java.util.TreeSet;public class TreeSetDemo {public static void main(String[] args) {// TreeSet 添加自定义数据类型 应该自定义排序规则TreeSet<…

openssl3.2 - exp - buffer to BIO

文章目录 openssl3.2 - exp - buffer to BIO概述笔记END openssl3.2 - exp - buffer to BIO 概述 openssl的资料看的差不多了, 准备将工程中用到的知识点整理一下. openssl中很多API是以操作文件作为输入的, 也有很多API是以BIO作为输入的. 不管文件是不是受保护的, 如果有可…

游戏服务器租赁多少钱一台?26元,服不服?

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;可以选择轻量应用服务器和云服务器&#xff0c;阿腾云atengyu…

SpringCloud-搭建Nacos服务中心

Nacos 是一个开源的动态服务发现、配置管理和服务管理平台。它支持多种服务发现协议&#xff0c;包括基于 DNS 和 HTTP 的服务发现。Nacos 提供了强大的配置管理和服务发现功能&#xff0c;使得在微服务架构中轻松实现服务注册、发现和配置管理成为可能。在本篇博客中&#xff…

微信小程序(三十六)事件传参

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.传参步骤 2.传参接收解构步骤 源码&#xff1a; index.wxml <button type"primary" bind:tap"onclick" mark:index"{{0}}" mark:remb"{{1}}" class"But&quo…

【Axure高保真原型】计算日期区间的天数差

今天和大家分享计算日期区间的天数差的原型模板&#xff0c;选择开始日期和结束日期&#xff0c;点击等于按钮后&#xff0c;就可以计算出这两个日期之间相差了多少天&#xff0c;本案例提供中继器版的日期选择器&#xff0c;以及JS版的日期选择器&#xff0c;具体效果可以观看…

kafka-splunk数据通路实践

目的&#xff1a; 鉴于目前网络上没有完整的kafka数据投递至splunk教程&#xff0c;通过本文操作步骤&#xff0c;您将实现kafka数据投递至splunk日志系统 实现思路&#xff1a; 创建kafka集群部署splunk&#xff0c;设置HTTP事件收集器部署connector服务创建connector任务&a…

【工具】Android|Android Studio 长颈鹿版本安装下载使用详解

版本&#xff1a;2022.3.1.22&#xff0c; https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.22/android-studio-2022.3.1.22-windows.exe 前言 笔者曾多次安装并卸载Android Studio&#xff0c;反复被安卓模拟器劝退。现在差不多是第三次安装&#xff0c…

LeetCode-第2469题=温度转换

1.题目描述 给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度&#xff0c;以 摄氏度&#xff08;Celsius&#xff09;为单位。 你需要将摄氏度转换为 开氏度&#xff08;Kelvin&#xff09;和 华氏度&#xff08;Fahrenheit&#xff09;&#xff0c;并以数组 ans …

canvas缩放坐标系(scale)

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

(篇九)MySQL常用内置函数

目录 ⌛数学函数 ⌛字符串函数 ⌛聚合函数 ⌛日期函数 &#x1f4d0;获取当前时间 &#x1f4d0;获取时间的某些内容 &#x1f4d0;​编辑 &#x1f4d0;格式化函数 &#x1f4cf;format类型&#xff1a; ⌛系统信息函数 ⌛类型转换函数 数学函数 字符串函数 聚合函…

PCB正片和负片的区别与使用

PCB正片和负片的区别与使用 简单解释详细解释 简单解释 简单的来说&#xff0c;正片在电路板的表面&#xff08;指定是顶层和底层&#xff09;上保留我们绘图工具所画的线&#xff08;图案&#xff09;。 而负片则是将我们绘制的线&#xff08;图案&#xff09;进行腐蚀掉&am…

transformers之agent

Hugging Face 发布了 Transformers Agent&#xff0c;一种利用自然语言从精选工具集合中选择工具并完成各种任务的代理。此举使其与 LangChain 作为构建企业通用人工智能 (AGI) 应用程序的新兴框架直接竞争&#xff0c;因为它很像 LangChain 工具和代理。 什么是 Transformers…

python将Word页面纸张方向设置为横向

通过python-docx的章节属性&#xff0c;就可以更改纸张方向、纸张尺寸。 import docx from docx.enum.section import WD_ORIENT from docx.shared import Cmdocument docx.Document() section document.sections[0]# 设置纸张大小为A4大小 section.page_width Cm(21) sect…