2020王道P18,综合10:将一维数组R中的数列循环左移P个位置。

2020王道P18,综合10:将一维数组A中的数列循环左移P个位置。个人感觉这一题与第八题很相似,先说说思路:

例如数组:{1,2,3,4,5,6,7,8,9}

1.将前P个数逆置。----->{4,3,2,1,5,6,7,8,9}

2.将后n-p个数逆置。----->{4,3,2,1,9,8,7,6,5}

3.将整个数组逆置。----->{5,6,7,8,9,1,2,3,4}

实现的代码如下:

#include
#include
#include
#define InitSize 100
typedef int ElemType;

void Reserve(ElemType A[],int left,int right){
	int mid=(left+right)/2;
	for(int i=0;i<=mid-left;i++){
		ElemType temp=A[left+i];
		A[left+i]=A[right-i];
		A[right-i]=temp;
	}
}

void Exchange(ElemType A[],int p,int n){
	Reserve(A,0,p-1);//逆置前P个
	Reserve(A,p,n-1);//逆置后n-p个
	Reserve(A,0,n-1);//逆置整个数组
}

int main(){
	int A[10]={1,2,3,4,5,6,7,8,9,10};
	printf("生成前顺序表:");
	for(int m=0;m<10;m++){
		printf("%5d",A[m]);	
	}
	printf("\r\n");
	print

你可能感兴趣的:(2020王道课后习题,C语言,2020王道,循环移动P位置,一维数组)