循环左移
设将n(n>1)个整数存放到一位数组R中,设计一个算法,将R中的序列循环左移P(0<P<n)个位置,即将R中数据由{X0,X1,....,Xp-1}变换为{Xp,Xp+1,...,Xn-1,X0,X1,...,Xp-1}
要实现R中序列循环左移P个位置,只需先将前P个元素逆置,再将剩下的元素逆置,最后将R中的所有元素逆置即可
#include <iostream> #define N 50 using namespace std; void reverse(int R[],int l,int r) { int i,j; for(i=l,j=r; i<j; i++,j--) { int 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;i++){ cout<<R[i]<<" "; } RCR(R,n,L); for(i=0;i<n;i++){ cout<<R[i]<<" "; } cout<<endl; return 0; }