如何在时间复杂度为0(1)的情况下将顺序表L的所有元素逆置

用时间空间复杂度为1的算法让顺序表逆置 今天看到一到有意思的题 虽然和题意不大对(因为要位置变换,我这种想法不算真正的位置变换)但是感觉很有意思。 #pragma once #define MAXSIZE 50 #include<string.h> template <typename ElemType> struct Sequence { public: ElemType data[MAXSIZE]; int length; ElemType& (Sequence::*Index) 阅读详情

一 算法思想

将顺序表分成两部分,对于元素L.elem[i](0 <= i < L.length/2),将其与后半部分的对应元素L.data[L.length-i-1]进行一一交换。

二 算法实现

#include<iostream>//输入头 
using namespace std;//标准输入输出

typedef int Status;
typedef int ElemType;

#define MAXSIZE 100
#define ERROR -1
#define OK 0

typedef struct {
	ElemType *elem;
	int length;
}SqList; 

Status init_Queue(SqList &L){
	
	L.elem = new ElemType[MAXSIZE]; //初始化最大长度的顺序表 
	
	if(!L.elem){
		return ERROR; //初始化失败 
	}
	
	L.length = 0; //初始时数据表为空 
	return OK;
}

Status reverse_Queue(SqList &L) {
	
	ElemType temp;
	
	for(int i = 0; i < L.length/2; i++) {
		
		temp = L.elem[i];
		L.elem[i] = L.elem[L.length-i-1];
		L.elem[L.length-i-1] = temp; 
	}
	return OK;
}

int main(){
	SqList L;
	 
	cout<<"1.初始化顺序表!\n";
	cout<<"2.输入6个不同的数字!\n";
	cout<<"3.将顺序表进行逆置!\n";
	cout<<"0.退出!"<<endl<<endl;
	
	int elect = -1;
	
	while(elect !=0){
		cout<<"请选择你的后续操作:"; 
		cin>>elect;
		switch(elect){
			case 1:
				if(!init_Queue(L)){
					cout<<"初始化顺序表成功!"<<endl; 
				}else{
					cout<<"初始化顺序表失败!"<<endl; 
				}
				break;
			case 2:
				cout<<"请输入6不同数字:" ;
				for(int i = 0; i < 6; i++){
					cin>>L.elem[i];
					L.length = 6; 
				}
				break;
			case 3:
				reverse_Queue(L);
				cout<<"逆置后的数据序列为:" ;
				for(int i = 0; i < L.length; i++ ){
				 cout<<L.elem[i]<<" ";
				} 
				cout<<endl; 
				break;
		}
	}
	return 0;
}

三 算法结果

 

删除顺序表中值相同的多余元素 设计并验证一下算法:设顺序表L中的数据元素为整数且非递增有序,删除其值相同的多余元素,即顺序表L中相同的元素只保留一个,并逆置删除后的顺序表L。(1)根据键盘输入数据建立顺序表L。(2)输出顺序表L、删除值相同的多余元素后的顺序表L、逆置的顺序表L。(3)假设顺序表L长度为n,要求以O(n)的时间复杂度完成对值相同多余元素的删除。实验代码#include &lt;stdio.h&gt; #incl... 阅读详情

相关推荐

【头歌实训:逆置顺序表】

根据提示,在右侧编辑器补充函数rev的代码,使用顺序表L的空间就地逆置L。},要求时间复杂度为O(n),空间复杂度为O(1)。第一行为顺序表逆置之前的元素。每个数据后一个空格。第二行为顺序表逆置之后的元素。每个数据后一个空格。本关任务:设计一个算法,将一个顺序表L的元素{a。第一行为顺序表中元素个数n。第二行为空格隔开的n个整数。开始你的任务吧,祝你成功!

guang_Lee的博客 998

字符串之逆序(java实现)

对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。 给定一个原字符串A和他的长度,请返回逆序后的字符串。 测试样例: "dog loves pig",13 返回: "pig loves dog" 解析:首先将整个字符串逆序,然后将空格分割成的各个子串逆序,即可得到结果,该方法时间复杂度O(n),空间复杂度

传a奇—学习博客 2176

用blender为模型贴图并在gazebo中显示

用blender为模型贴图并在gazebo中显示 首先我用的是最新的blender2.92版本,附上链接https://www.blender.org/download/。并设置好简体中文。语言可以在编辑->偏好设置->界面里面设置。 首先界面右上角的摄像头,方块,灯光三个场景全都删除。 接着导入stl格式的模型文件,下面以tianbot_mini上面的激光雷达的模型为例。 导入激光雷达模型后,点击进入上方的UV Editing按钮进入UV编辑界面 此时我面看见网格化的激光雷达模型

qq_48427527的博客 8000

逆置顺序表,时间复杂度为O(1)

【代码】逆置顺序表,时间复杂度为O(1)

qq_46659042的博客 368

XGBoost特征重要性为0的问题:深度解析与应对策略

在机器学习领域,XGBoost(Extreme Gradient Boosting)作为一款高效且强大的集成学习算法,已经被广泛应用于各类预测任务中。然而,在实际应用过程中,许多数据科学家和工程师们遇到了一个令人困惑的现象——某些特征的重要性值为0。这不仅影响了模型的解释性,还可能导致特征选择过程中的误判。本文将深入探讨这一问题,分析其背后的原因,并提供相应的解决方案。在深入探讨特征重要性为0的问题之前,我们首先需要了解XGBoost是如何计算特征重要性的。XGBoost提供了三种常见的特征重要性计算方法:

cda2024的博客 1705

从Pikachu靶场实战解析越权漏洞:原理、攻击与防御

本文通过Pikachu靶场实战详细解析越权漏洞的原理、攻击方式与防御策略。文章深入探讨水平越权和垂直越权的危害,结合代码示例展示漏洞利用过程,并提供代码层和架构层的立体化防御方案,帮助开发者有效防范这一Web安全隐形杀手。

weixin_29325007的博客 358

数据结构-顺序表-将顺序表所有元素逆置,且要求空间复杂度为O(1)

一.算法思想 根据题目的要求,将顺序表中的元素上半部分及下半部分的元素通过变量temp进行逆置 二.源代码 //逆置顺序表 void Reverse(List list) { int temp = 0; //辅助变量 /*转置前的数组*/ PrintList(list); /*算法思想:将顺序表的前半部分与后半部分进行交换,故需用到temp辅助变量 注: 因list->last为顺序表的下标,故list->last/2为奇数和偶数时处理方式不同 即list->last

Xulidanga的博客 2399

ZEMAX学习第7天-手机镜头光学系统设计全过程案例

接下来对系统微调,依次缩小CRA和畸变,首先对CRA进行依次递减(39°、38°、37°、36°、35°),目前CRA角度40度,每次下降一度进行优化,利用MAXX加OPLT一起控制,控制小于35°。可以看出在标注的三个地方镜头曲率变化,导致PY=1的光线走向奇特,因此需要对矢高进行调整,按照标注的地方依次调整(从右到左)至传函变好,越靠近右边对其余视场影响越小。3.圆锥系数值较大,透镜形状怪异;一、第1,3镜子偏厚,第4镜子偏薄,45镜子间隔边缘偏小,第5片镜子中心厚度与边缘厚度相差较大,需要控制;

liningliwei的博客 1067

C - 顺序表应用4-2:元素位置互换之逆置算法(数据改进)

Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N)、空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。 注意:交换操作会有多次,每次交换都是在上次交换完成后的顺序表中进行。 Input 第一行输入整数len(1<=len<=1000000)

qq_45830025的博客 412

深入解析YT8521S千兆以太网PHY芯片的设计与调试要点

本文深入解析了YT8521S千兆以太网PHY芯片的设计与调试要点。重点剖析了硬件设计中的电源方案、RGMII接口电平配置(尤其是1.8V电平方案)以及PCB布局布线等关键细节,并提供了从硬件检查、驱动配置到性能测试的完整调试流程,帮助工程师规避常见陷阱,实现稳定可靠的千兆网络连接。

weixin_29190573的博客 687

图灵奖:计算机科学领域的诺贝尔奖

最后,图灵奖也是计算机科学领域发展的重要推动力之一,它促进了该领域的进步和繁荣。图灵奖作为计算机科学领域的诺贝尔奖,不仅是对获奖者卓越贡献的肯定,更是对整个计算机科学领域的推动和激励。在未来的发展中,我们期待看到更多的科学家和团队在图灵奖的激励下不断取得新的突破和创新成果为计算机科学的发展注入新的活力和动力。Vinton G. Cerf和Robert E. Kahn:2004年图灵奖得主,由于他们在互联网方面开创性的工作而获奖,这包括设计和实现了互联网的基础通讯协议TCP/IP,以及在网络方面的卓越领导。

wangnvshibeib的博客 2626

顺序表的编程题及完整代码(顺序表逆置、删除、合并、查找等)

文章目录顺序表逆置将循序表L中的所有元素逆置将两个顺序表的位置互换删除操作删除顺序表L中所有值为x的数据元素删除有序顺序表L中所有值重复的元素合并操作将两个有序顺序表合并成一个新的有序顺序表查找操作找两个等长升序序列的中位数说明 顺序表逆置 将循序表L中的所有元素逆置 问题描述: 将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。 算法思想: 扫描顺序表L的前半部分元素,对于元素L.data[i](0<=i<L.length/2),将其与后半部分对应元素L.data[L.length-1

薛定谔的猫的博客 4698

西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告

将电位器Rp调至中心位置,用双综示波器观察并绘制方波U0的波形,测量其幅值和频率;将电位器RP调至中心位置,用示波器观察并绘制锯齿波U0的波形,记录;示波器基线调零,Ui输入1000HZ、幅值为2V的正弦信号,观察并记录Ui与U0波形,读出图中波形跳变时的Ui临界值;用万用表电位器RP调至预测结果位置,用示波器观察并描绘三角波输出U0及方波输出uo’,测其幅值、频率及Rp值,记录之。示波器基线调零,U输入1000HZ、幅值为2V的正弦信号,观察UI与U0波形。理论算法公式:当Ui

Welcome To My6n Blog 3936

空间复杂度为O(1)的条件下将顺序表逆置

问题描述:设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。 算法基本设计思想: 扫描顺序表L中的前半部分元素,对于元素L.data[i](0<=i<L.length/2),将其与后半部分的对应元素L.data[L.length-i-1]进行交换。【注】这里L.data[L.length-i-1]使用举例子找规律方法得到,例如L.data[0]需要与L.data[L.length-0-1]交换,L.data[1]需要与L.data[L.length-1-1]交换.

Dear_Jia的博客 2356

【数据分享】2012-2022年全国及各城市POI(兴趣点)数据(超20G)

POI(一般作为Point of Interest的缩写,也有Point of Information的说法),通常称作兴趣点,泛指互联网电子地图中的点类数据,基本包含名称、地址、坐标、类别四个属性;随着互联网电子地图服务与LBS应用的普及,POI无论从概念范畴,还是从信息纵深都有了长足发展,互联网各个风口或火山口都和POI有一定关系,如O2O、电商、社交、互联网金融、共享经济等。

J_Giser的博客 2733

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

算法(顺序表逆置 单链表逆置)

顺序表逆置 两两交换分别是首尾交换一次和中间两个数交换一次 所以这种逆置方法的交换次数是总长度的一半n/2; void nizhi(sqlist *L) { int i,t; for(i = 0;i <= L->length-3;i++) { t = L->data[i]; L->data[i] =L->data[L->length-1-i]; L->data[L->length-i-1] = t; } for(i = 0;i&l

Timewilltellz的博客 1104

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【数据结构】顺序表

顺序表示一种最为简单的线性结构,可以分为两种,一种是静态顺序表,一种是动态顺序表 1)静态顺序表 所谓静态顺序表是指一旦定义了该表,其大小始终固定不变,函数调用时,静态顺序表在函数栈上开辟空间,我们熟悉的数组就是一种静态顺序表 e.g #definde MAXSIZE 100 ElemType Sqlist[MAXSIZE]; int len; 2)动态顺序表 所谓动态顺序表...

无意呢的博客 5877

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构顺序表算法题(逆置、查找值、负值在正值前、循环移动)

先声明:本人是个初学者,本博客全为我自己写的,只是作为个人学习记录使用,很有可能不够规范或漏洞百出,请多包涵。 ps:有个小目标,大概就是之后输入数据能通过产生随机数实现,到时候再钻研,本博客还是手动输入的简单样例数据。 首先先简单定义一个用动态存储分配的顺序表以及初始化以及根据长度打印表的函数: #include<stdio.h> #include<malloc.h> #define initSize 100 typedef int ElemType; typedef s

m0_52461904的博客 1902

顺序表应用4:元素位置互换之逆置算法

顺序表应用4:元素位置互换之逆置算法 Time Limit: 10ms   Memory limit: 570K  有疑问?点这里^_^ 题目描述 一个长度为len(1数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1 注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能用一个循环语句实现,不能分成两个部分

supperdandan的博客 531

【练习】C语言顺序表所有元素逆置+空间复杂度为O(1)(2021王道应用题2.2)

(2021)2.2设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。 1.定义顺序表 #define MaxSize 50 typedef struct{ int data[MaxSize]; int length; }SqList; 2.初始化顺序表 取地址符号在练习2.1中有相应解释,在此不做赘述。 void InitList(SqList *L){ for (int i=0,j=1; i<10; i++,j++){ L->data[i] =

qq_43153972的博客 2070

顺序表的逆置vs单链表的逆置 带图解 众多方法汇总

最近学习顺序表跟单链表,发现题目很多相似的东西,把题目中的东西提炼一下,做个两个表的逆置操作的算法总结,冲鸭~ *顺序表相对高效的算法 时间复杂度0(n),空间复杂度0(1) *算法思想:扫描顺序表l的前半部分元素,对于元素l.data[i] (0<=i<=l.length/2),将其余后半部分对应元素l.data[l.length-i-1]进行交换 void Reverse1(Sq...

Abigail路小雨的博客 595

将顺序表的所有元素逆置

#include<stdio.h> #include <stdlib.h> #include <iostream> using namespace std; constexpr auto Maxsize = 10; typedef struct { int *data; int length; }SqList; //初始化顺序表(动态分配) void InitSqList(SqList &L) { L.data = new int[Maxsize]; L

weixin_44195690的博客 1979

c语言顺序表逆置的算法分析,顺序表的就地逆置上课讲义.doc

题目:试写一个算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2, …,an)逆置为(an,an-1, …a1)一 需求分析1.本题在演示程序中,数组最大可以存100个数据。2.在设计中事先需要输入长度,再输入数据,以回车结束。3.程序执行的命令包括:1)定义线性表 2)初始化线性表 3)输入函数 4)输出函数 5)求逆置4.测试数据(1)请输入长度:4请输...

weixin_31129039的博客 1384
上一篇: 顺序表之最小值问题
下一篇: 两个有序顺序表合并成一个有序顺序表
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值