数据结构 线性表(数组)循环右移k位

本文介绍了一种线性表(数组)循环右移k位的方法,使用C语言实现,重点在于如何在不使用额外空间的情况下完成数组元素的移动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(线性表(数组)循环右移k位

已知线性表A采用顺序存储结构。编写算法,将该表A中元素循环右移K位,要求空间复杂度为O(1)

如以下结果:
表A中的原始数据是:1,2,3,4,5,6
若k=2;
则表A的最终数据是:5,6,1,2,3,4

算法思想:

线性表在处理的时候,按照数组的形式的进行处理,因此此处用数组的格式实现。首先先右移动一位,即最后一个数会被覆盖,因此先记录下最后一个数。这样循环K次就可以了,代码如下:

#include <stdio.h>
int main()
{
	int data[]={1,2,3,4,5,6};
	int temp,i,k;
		
	int len= sizeof(data)/sizeof(int);//数组长度 
	printf("请输入移动位数k=");
	scanf("%d",&k);
	for(int j=1;j<k+1;j++)
	{
		
		temp = data[len-1];
		for (i = len-1;i > 0 ;i--)
	{
		data[i] = data[i-1];
	}
		data[0] = temp;
		
	}

	for(int s= 0;s<len;s++){
	printf("%d",data[s]);
	}
}

实现结果截图:在这里插入图片描述
总结:本方法没有考虑到时间复杂度的大小,如有效率更高的解法,欢迎交流!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Devour123

愿每一份用功都可以得到回报

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

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

打赏作者

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

抵扣说明:

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

余额充值