首页 > 其他分享 >线性表03

线性表03

时间:2023-03-23 23:57:04浏览次数:38  
标签:03 线性表 元素 个数 等于 解法

03.对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。
解法1:用k记录顺序表L中不等于x的元素个数(即需要保存的元素个数),扫描时将不等于x的元素移动到下表k的位置,并更新k值。扫描结束后修改L的长度。
该解法的代码如下:

//线性表03_1
void del_x_1(SqList &L,ElemType x)
{
	//本算法实现删除顺序表L中所有值为x的数据元素 
	int k=0,i;//记录值不等于x的元素个数 
	for(i=0;i<L.length;i++)
	{
		if(L.data[i]!=x)
		{
			L.data[k]=L.data[i];
			k++;//不等于x的元素增1 
		}
	}
	L.length=k;//顺序表L的长度等于k 
} 

解法2:用k记录顺序表L中等于x的元素个数,边扫描边统计k,并将不等于x的元素前移k个位置。扫描结束后修改L的长度。
该解法的代码如下:

//线性表03_2
void del_x_2(SqList &L,ElemType x)
{
	int k=0,i=0;//k记录值等于x的元素个数 
	while(i<L.length)
	{
		if(L.data[i]==x)
		{
			k++
		}
		else
		{
			L.data[i-k]=L.data[i];//当前元素前移k个位置 
		}
		i++;
	}
	L.length=L.length-k;//顺序表L的长度递减 
 } 

此外,本题还可以考虑设头、尾两个指针( i =1, j = n ),从两端向中间移动,在遇到最左端值 x 的元素时,直接将最右端值非 x 的元素左移至值为 x 的数据元素位置,直到两指针相遇。但这种方法会改变原表中元素的相对位置。

标签:03,线性表,元素,个数,等于,解法
From: https://www.cnblogs.com/bujidao1128/p/17249947.html

相关文章

  • 计算机语言的发展史 03.23
    计算机语言的发展史机器语言我们都知道计算机基本方式都是基于二进制的方式二级制:010111001010110010110100这种代码是直接输入给计算机使用的不经过任何的转换汇编......
  • 设要采用CRC编码传送的数据信息x=1001,当生成多项式为G(x)=1101时,请写出它的循环校验码
    题目:设要采用CRC编码传送的数据信息x=1001,当生成多项式为G(x)=1101时,请写出它的循环校验码。若接收方收到的数据信息x'=1101,说明如何定位错误并纠正错误根据题目描述,需......
  • 今日总结2023/03/23
    今天星期四,只有一节体育,早上有卫生大联查还进行了班会评选了优秀团员。我们宿舍荣幸获奖。下午体育课上打球非常爽,晚上参加了青马培训的结业考试,充实的一天。晚上解决了IDE......
  • java学习日记20230322-代码块
    代码块代码块又称为初始化块,属于类中的成员,是类的一部分,类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不......
  • what's the difference between const and constexpr in C++?
    BothconstandconstexprareusedtodefineconstantsinC++,buttheyhavedifferentmeaningsandusecases.constisusedtodeclareavariableasconstant,......
  • 天梯赛练习题 L3-003 社交集群 (简单并查集)
    https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805053141925888题目大意:当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到......
  • 机器学习基础03DAY
    特征降维降维PCA(Principalcomponentanalysis),主成分分析。特点是保存数据集中对方差影响最大的那些特征,PCA极其容易受到数据中特征范围影响,所以在运用PCA前一定要做特征......
  • RabbitMQ 03 直连模式-可视化界面
    这里先演示最简单的模型:直连模式。其结构图为:一个生产者->消息队列->一个消费者生产者只需要将数据丢进消息队列,而消费者只需要将数据从消息队列中取出,这样就实现了......
  • 关于Could not autowire. No beans of 'xxxx' type found. 解决方法之一
    关于Couldnotautowire.Nobeansof'xxxx'typefound.解决方法之一原因:启动类与配置类是在一个包下但是不同包而且配置类也不是子包启动类没扫描到配置类这时......
  • ImportError: cannot import name 'joblib' from 'sklearn.externals'错误
    当输入fromsklearn.externalsimportjoblib会出现如下错  需要把代码直接改为如下代码即可:importjoblib ......