当前位置:   article > 正文

西北工业大学NOJ数据结构—011循环右移_noj循环移位

noj循环移位

这个题......不知道是不是我理解错了......反正我觉得可能是所有作业中最简单的一个(真)

大概说一下思路

1.用附加储存记录下最后一个元素,把之前的所有元素向右移动一个,最后把记录下的数值赋值到第一个位置

2.循环k次

....没了  就酱 上代码(づ ̄3 ̄)づ╭❤~

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct array{
  4. int *data;//
  5. }array;
  6. array *creat(int k)
  7. {//动态申请一个长度为k+1的数组
  8. array *pa;
  9. pa=(array*)malloc(sizeof(array));
  10. pa->data=(int*)malloc(sizeof(int)*(k+1));//多申请一个(其实无所谓= =)
  11. return pa;
  12. }
  13. int main()
  14. {
  15. int n,k;
  16. scanf("%d",&n);//输入数组长度n
  17. scanf("%d",&k);//输入要后移的位数k
  18. array *pa;
  19. pa=creat(n);
  20. int i=0;
  21. pa->data[0]=0;
  22. for(i=1;i<n+1;i++)
  23. scanf("%d",&pa->data[i]);//输入数组的第一位到第n位
  24. int t,j;
  25. for(i=0;i<k;i++){//以下程序循环k次 每次使得每个元素向后移动一位
  26. t=pa->data[n];//用一个变量记录下每次循环时的最后一个元素
  27. for(j=n;j>1;j--){
  28. pa->data[j]=pa->data[j-1];//将之前元素依此向后覆盖
  29. }
  30. pa->data[1]=t;//将之前记录下的最后一个元素放在第一位
  31. }
  32. for(i=1;i<n+1;i++)
  33. printf("%d ",pa->data[i]);//输出
  34. return 0;
  35. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/671711
推荐阅读
相关标签
  

闽ICP备14008679号