【数据结构】编程实现有序顺序表的顺序查找和二分查找算法。C++版

顺序表的C语言实现与应用 顺序表是一种线性表,其元素在内存中是连续存放的。在顺序表中,每个元素都有一个相对位置的序号,即索引,这些索引从0开始。数据的存储方式类似于数组,使得对于顺序表的访问变得非常快速,因为可以直接通过索引计算出元素在内存中的地址。顺序表支持两种基本操作:随机访问和顺序访问。随机访问意味着可以直接通过索引访问任何一个元素,时间复杂度为O(1)。而顺序访问则是按照元素的存储顺序访问所有元素,时间复杂度为O(n)。在C语言中,顺序表通常使用结构体来定义。 阅读详情

一、实验目的:
熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。
二、实验要求:
算法完善,考虑时间复杂度。
三、实验内容: 
编程实现有序顺序表的顺序查找和二分查找算法。

代码段

#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef int KeyType;

//数据元素类型定义 
typedef struct{
	KeyType key;//数据域 
}ElemType;

//顺序表的定义 
typedef struct{
	ElemType *R;//存储空间基地址 
	int length;//表的当前长度 
}SSTable;

//建立顺序表 
bool CreateList(SSTable &L)
{ int i;
  L.R=new ElemType[MAXSIZE+1]; //分配空间
  if (!L.R)  return false;   
  cout<<"请输入线性表的长度,不能大于"<<MAXSIZE<<':'<<endl; 
  cin>>L.length;
  cout<<"请有顺序的输入表中元素:"<<endl;
  for(i=1;i<=L.length;i++)
     cin>>L.R[i].key;   
}

//打印顺序表 
void print(SSTable L)
{ int i;
  for(i=1;i<=L.length;i++)
     if (i==1)  cout<<'('<<L.R[i].key;  
     else cout<<','<<L.R[i].key;
  cout<<')'<<endl;
}

//顺序查找
int Search_Seq(SSTable S,KeyType key){ 
	int i; 
	S.R[0].key=key;//把关键字放在0位置,若找到要查找的数据,则返回数据的位置,否则返回0 
	for(i=S.length;S.R[i].key!=key;--i);//从后往前找 
	return i;
}

//折半或二分查找 
int Search_Bin(SSTable S,KeyType key){
	int low,high,mid;
	low=1;high=S.length;//置查找区间初值 
	while(low<=high){
	mid=(low+high)/2;
	if(key==S.R[mid].key) return mid;//找到待查元素 
	else if(key<S.R[mid].key) high=mid-1;//继续在前一子表进行查找 
	else low=mid+1;//继续在后一子表进行查找 
    }
    return 0;//表中不存在待查元素 
}
int main(){
	int m,n,x;
	SSTable S;
	CreateList(S); 
	cout<<"您建立的表为:\n"; 
	print(S); 
	cout<<"请按1继续运行程序:"; 
	cin>>x;
	while(x){
	cout<<"请输入要查找的元素:\n";
	cin>>m; 
	cout<<endl; 
	cout<<"通过顺序查找:"<<endl; 
	n=Search_Seq(S,m) ;
	cout<<"数据"<<m<<"在表中的位置为:"<<n<<endl;
	cout<<endl; 
	cout<<"通过二分查找:"<<endl; 
	n=Search_Bin(S,m);
	cout<<"数据"<<m<<"在表中的位置为:"<<n<<endl;
	cout<<endl;
	cout<<"是否继续查找元素?\n";
	cout<<"----是[请输入1]----\n";
	cout<<"----否[请输入0]----\n"; 
	cin>>x; 	
	}
    return 0;
}

实验结果watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56yZ5LmL5q6H,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 

C++ STL库数据结构大题实战指南 本文还有配套的精品资源,点击获取 简介:数据结构是计算机科学的核心,对于考研和面试尤为重要。本资料精选关键题型,深入讲解数据结构的查找、顺序表、树结构、排序算法等概念,并利用C++与STL库进行实现。覆盖了二分查找、线性查找、哈希查找、顺序表的std::vector实现、多种树结构(包括自平衡二叉树)、多种排序算法(如快速排序和归并排序),并通过实例代码演示了其实际应用。旨... 阅读详情

相关推荐

向NCBI上传16S rDNA数据的操作详解

专门介绍向NCBI上传16S rDNA数据的方法不太多。因为自己有上传数据的需要,所以决定边摸索边写下操作流程。如果这篇博文交代了上传步骤以及一些描述文件属性的书写,帮到你的话,还请点赞收藏。

yue81560的博客 2万+

顺序表的操作

顺序表的操作 这里先定义个顺序表 #include <iostream> using namespace std; #define MAXSIZE 100 typedef struct{ int *elems; int length; int size; }Sqlist; Sqlist list; 顺序表初始化 定义bool类型函数 initList() ,初始化成功为true,失败为false //初始化顺序表,创建一个空表 bool initList(Sqlist

CairBin的博客 480

Wordpress实战之第二章安装wordpress 软件需要的软件

使用下载并安装phpstudy面版工具 wget -O install.sh?https://notdocker.xp.cn/install.sh?&& sudo bash install.sh 2.安装成功如下 ==============运行状态========================= webpanel stop phpstudy running =================...

安全参透之旅 612

数据结构顺序表C语言

#include <iostream> using namespace std; #define maxSize 100 #define ElemType int typedef struct { int *data; int length; }sxList; //对线性表的初始化,为数组申请空间,并且将数组长度初始化为0 bool InitSxList(sxList &L) { L.length = 0; L.data = new int[maxSi

weixin_46130146的博客 430

避坑指南:OpenWebUI+SearXNG联网搜索的5个常见配置错误及解决方法

本文详细解析了OpenWebUI与SearXNG整合过程中常见的5个配置错误及解决方案,包括JSON格式配置陷阱、国内搜索引擎缺失、连续搜索失效等问题。通过实战验证的优化策略,帮助开发者避免性能下降和功能异常,提升大模型与搜索引擎的协同效率。

jenkins8butler的博客 819

阿里云 Docker 镜像加速收费后:这些免费替代方案值得收藏

阿里云Docker镜像加速服务收费后,国内开发者急需免费替代方案。本文推荐2025年仍可用的7个免费镜像源,包括轩辕镜像、DaoCloud、网易云等,并提供多源配置方案以提高稳定性。建议开发者在CI/CD环境中配置多个镜像源,避免构建失败。文章还提供了详细的配置步骤和使用建议,适合个人和团队开发者参考。

sg_knight的专栏 1931

顺序查找 PTA代码补全题

#include<iostream> using namespace std; #define MAXSIZE 100 #define OK 1; typedef struct{ int key; }ElemType; typedef struct{ ElemType *R; int length; }SSTable; int Create_SSTable(SSTable &L) { int n; cin >> n; for(int i=1;i<=n

qq_38603916的博客 2398

51单片机 DHT11温湿度传感器LCD显示+串口打印+Proteus仿真

DHT11+LCD1602+串口输出+Proteus仿真

perseverance51博客 7198

顺序查找(线性查找)

顺序查找(线性查找) 设置哨兵的顺序查找: #include<iostream> #define MAXSIZE 100 using namespace std; typedef char KeyType; typedef struct { KeyType key; }ElemType; typedef struct { ElemType* R; int length; }SSTable; void InitST(SSTable& ST) { ST.R = new ElemTy

菜菜的博客 579

巡检机器人的基于ROS系统的任务管理架构设计总结

本文探讨了基于ROS(机器人操作系统)的工业巡检机器人任务管理架构设计,提出分层闭环方案。架构围绕稳、准、活、扩四大目标,分为感知层(多源数据融合)、调度层(智能决策)、执行层(动作控制)和数据层(存储交互)。关键技术包括ROS2实时性优化、功能包复用和多机器人协同调度。实践案例显示,该架构在电力巡检中使任务完成率达99%,在化工园区实现95%覆盖率。当前挑战包括SLAM地图漂移和多机通信延迟,未来可通过语义SLAM和区域通信优化。

start_up_go的博客 476

第14.11章 高翔博士最新开源框架Lightning-LM源码解读(十一):离线定位模块全解析,从激光匹配到位姿图优化的极致优化

本文介绍了Lightning-LM离线定位模块的技术架构与实现细节。该模块基于3D激光雷达与IMU融合,采用改进版NDT匹配算法实现高精度定位,具备动态图层更新、多源信息融合等特性。核心流程包括数据预处理、激光里程计处理、IMU预测与点云去畸变、位姿图优化等环节,通过轻量级miao库实现高效增量优化。文章详细解析了模块的代码结构、关键函数功能及数据流,为SLAM系统的开发与优化提供了实践参考。

行知SLAM 375

C++实现顺序栈

这是实现顺序栈时出现的问题,贴上来向各位请教! #include<iostream> using namespace std; #define maxsize 100 typedef int T; class SqStack { public: SqStack(); ~SqStack(); bool PushStack(); //入栈 bool PopStack(); //出栈 void DGetStack(); //遍历 void WGetStack(); boo

weixin_43200943的博客 265

XGBoost原生接口和Sklearn接口参数详解

XGBoost原生接口和Sklearn接口参数详解

算法工程师 2654

【C++数据结构——查找】二分查找(头歌实践教学平台习题)【合集】

二分查找的基本思想是:每次比较中间元素与目标元素的大小,如果中间元素等于目标元素,则查找成功;顺序表是线性表的一种存储方式,它用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的元素在物理存储位置上也相邻。第1次比较:查找范围R[0...10],比较元素R[5]:25。第1次比较:查找范围R[0...10],比较元素R[5]:25。第2次比较:查找范围R[0..4],比较元素R[2]:10。第3次比较:查找范围R[3...4],比较元素R[3]:15。,其中是顺序表中元素的个数。

Rossy Yan的博客 1456

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++顺序表折半查找

算法思想 折半查找:又称二分查找,适用于有序的顺序表。 先将中间位置元素与Key进行比较 若相等,则返回中间位置下标 若不相等: ① key<中间值,在左半边继续查找 ② key>中间值,在右半边继续查找 算法实现 int BinarySearch(sqList L,int key) { int low=0,high=L.l...

GKGKD 1996

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据结构(严蔚敏版)与算法的实现(含全部代码)

目录 基础 c/c++ 代码优化及常见错误 c语言位运算的妙用-程序优化 c/c++进制转换方法汇总(含全部代码) 二进制数-北邮2012研究生复试 质因子分解 除树和图外的数据结构可以使用STL: C++ STL的使用 数据结构 线性表 顺序表 循环左移(2010联考真题) 单链表 单链表相邻结点逆置(2019北邮考研真...

关注网络安全、云原生安全 15万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【数据结构实验】查找(二分查找&顺序查找)

一、实验目的: 熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。 二、实验要求: 1、掌握查找的基本方法。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容与过程 实验内容: 编程分别对有序顺序表的顺序查找,二分查找算法进行实现。 代码如下: #include<iostream> #include<stdio.h> #include<cstring> #

山风不打咩的博客 1692

顺序表应用6:有序顺序表查询

题目描述 顺序表内按照由小到大的次序存放着n个互不相同的整数(1 输入 第一行输入整数n,表示顺序表的元素个数; 第二行依次输入n个各不相同的有序整数,代表表里的元素; 第三行输入整数t,代表要查询的次数; 第四行依次输入t个整数,代表每次要查询的数值。 输出 输出t行,代表t次查询的结果,如果找到在本行输出该元素在表中的位置,否则本行输出No Found! 示例输入 10

Andy_x_x的博客 1838

数据结构实验报告(四)——查找和排序算法

数据结构实验报告——查找和排序

半岛铁盒里 1万+

C语言实现折半查找(二分查找)的算法

编写一个程序exp9-2.cpp,输出在顺序表(1,2,3,4,5,6,7,8,9,10)中采用折半查找方法查找关键字9的过程。 //文件名:exp9-2.cpp #include #define MAXL 100     //定义表中最多记录个数 typedef int KeyType; typedef char InfoType[10]; typedef struct {

追溯的博客 8408

【3330】顺序表应用6:有序顺序表查询

顺序表应用6:有序顺序表查询 Time Limit: 7ms   Memory limit: 700K  有疑问?点这里^_^ 题目描述 顺序表内按照由小到大的次序存放着n个互不相同的整数(1 输入  第一行输入整数n,表示顺序表的元素个数; 第二行依次输入n个各不相同的有序整数,代表表里的元素; 第三行输入整数t,代表要查询的次数; 第四行依次输入t个整数,代表每

DLFbest的博客 555

sdutacm-顺序表应用6:有序顺序表查询

山东理工acm平台题解

axuhongbo的博客 511

线性表的查找算法-C语言

了解查找的基本概念,理解顺序查找、折半查找和分块查找的思想,掌握折半查找过程的判定树构造方法,实现线性表的查找算法。

小北的博客 7176

数据结构实验四 查找和排序算法实现

一、实验目的: 1、领会折半查找的过程和算法设计; 2、领会二叉排序树的定义,二叉树排序树的创建、查找和删除过程及其算法设计; 3、领会冒泡排序的过程和算法设计; 4、领会堆排序的过程和算法设计; 5、掌握基数排序算法及其应用。 二、使用仪器、器材 微机一台 操作系统:WinXP 编程软件:C/C++编程软件 三、实验内容及原理 填入自己的内容(思路或算法流程图、源代码、说明等) 1、教材P362实验题2:实现折半查找的算法 编写一个程序exp9-2.cpp,输出在顺序表(1,2,3,4,5,6,7,8,9

GHY 4362
上一篇: 【Java】猜数字,程序随机分配给客户一个1-100之间的整数,用户在输入对话框中输入自己的猜测,程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”,用户可根据提示信息再次输入猜测
下一篇: 【Java】简答题:JDBC操作的步骤?在开发应用程序时,对事件的处理是必不可少的,只有这样才能够实现软件和用户的交互。常用事件包括哪种?MouseListener接口有5个抽象方法,分别在什么时候
笙之殇
博客等级 码龄6年 1211粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笙之殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值