向量右移一位 c语言,【数据结构】用向量作存储结构,试设计一个算法,仅用一个辅助结点,实现将线性表中的结点循环右移k位的运算,谁能解答一下。...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

qing劫JIE

2013.03.17

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:58%    等级:12

已帮助:6747人

#include

void move(int array[],int k,int length ){//k表示移动第k位置,length表示长度

int i,j, temp ;

if (k<0){

printf("输入的移动位数有错误,应当为整数");

return ;

}

//对于循环右移来说,真正变换的位置的一定是k对length的余数。(它的商就是还原了几次)

//因此我们外层循环如下为例:

//1 2 3 4 5 6 7 ,假设右移3位

//第一次移动结果:

// 1 2 3 4 5 6 7

//再把7放到1的位置就可以了

//所以内存循环就做一趟调整

//我们用temp来保存移出的最后一位,在一趟调整之后把移出的这一位放到第一位

for(i=0;i

temp = array[length-1];//保留最后一位

for(j=length-1;j>0;j--){//数组的最后一位的下标是长度-1

array[j] = array[j-1] ;

}

array[0]= temp ;//放回首位

}

}

int main(void){

int arr[]={1,2,3,4,5,6,7} ;

int i=0 ;

move(arr,3,7);

for(;i<7;i++){

printf("%d\t",arr[i]) ;

}

return 0 ;

}

02分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值