顺序表元素的逆置式交换

本文探讨如何将数据集合的前m个元素移至最后,提出三种解决方案,包括赋值式和交换式移动。通过示例代码展示方法一,强调在保持代码可读性的同时追求简洁性。此外,还简要介绍了动态内存分配函数malloc的使用。
摘要由CSDN通过智能技术生成

题目:将数据集合的前m个元素移至最后。例:3,2,5,8,4,7,6,9         m=3,则移动后为 8,4,7,6,9,3,2

针对这个问题可以通过三种方法解决:

方法一:定义一个int型变量x,将数组中a[0]赋给x,其余元素以此前移,最后将x赋给a[n-1]。将此过程循环m次,完成元素的移动。具体实现代码如下:

#include<stdio.h>
int main(void)
{
	int a[8]={3,2,5,8,4,7,6,9};
	int m;
	printf("请输入移动前几个元素:");
	scanf("%d",&m);
	void MoveElement(int a[],int n,int m);
	MoveElement(a,8,m);
	for(int i=0;i<8;i++)
		printf("%5d",a[i]);
	return 0;
}
void MoveElement(int a[],int n,int m)
{
	int i,j,x;
	for(i=0;i<m;i++)
	{
		x=a[0];
		for(j=0;j<n-1;j++)
			a[j]=a[j+1];
		a[j]=x;
	}
}
方法二:定义一个与数组a[8]={3,2,5,8,4,7,6,9}大小相同的内存单元b,首先将后n-m个元素依次赋给数组b的前n-m个单元,再把数组a的前m个元素依次赋给数组b的b[n-m]至b[n-1],此时数组b的元素已经是移动后的数据元素,但是由于数组b是临时分配的单元,使用后要释放,所以再将数组b中的元素依次赋给数组a。具体实现代码如下&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值