概述
设将n(n>1)个整数存放到一维数组R中,设计一个算法,将R中的序列循环左移P(0<P<n)个位置,即将R中的数据由{X0,X1,X2,…,Xn-1}变换为{Xp,Xp+1,…,Xn-1,X0,X1,…,Xp-1}。要求:写出本题的算法描述。
分析:
要实现R中序列循环左移P个位置,只需先将R中前P个元素逆置,再将剩下的元素逆置,最后将R中所有元素再整体做一次逆置操作即可。
算法描述如下所示:
#include<iostream>
#define N 50
using namespace std;
void Reverse(int R[],int l,int r)
{
int i,j;
int temp;
for(i=1,j=r; i<j; ++i,--j)
{
temp = R[i];
R[i] = R[j];
R[j] = temp;
}
}
void RCR(int R[],int n,int p)
{
if (p<=0 || p>=n)
{
cout<<"ERROR"<<endl;
}
else
{
Reverse(R,0,p-1);
Reverse(R,p,n-1);
Reverse(R,0,n-1);
}
}
int main()
{
int L,i;
int R[N],n;
cin >> L;
cin >> n;
for (i=0; i<=n-1; ++i)
{
cin >> R[i];
}
RCR(R,n,L);
for (i=0; i<=n-1; ++i)
{
cout<<R[i]<<" ";
}
cout << endl;
return 0;
}
最后
以上就是微笑往事为你收集整理的数组元素循环左移的全部内容,希望文章能够帮你解决数组元素循环左移所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复