本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a​0​​a​1​​⋯a​n−1​​)变换为(a​m​​⋯a​n−1​​a​0​​a​1​​⋯a​m−1​​)(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

输入第1行给出正整数n(≤100)和整数m(≥0);第2行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出循环左移m位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

8 3
1 2 3 4 5 6 7 8

输出样例:

4 5 6 7 8 1 2 3

#include <stdio.h>

#include <stdlib.h>

typedef int ElementType;

typedef struct Node *NodePtr;

struct Node{

ElementType Data;

NodePtr Next;

};

int main()

{

int N,M,i;

scanf("%d %d", &N,&M);

NodePtr Head,Rear,tmp1,tmp2;

NodePtr P = (NodePtr)malloc(sizeof(struct Node));

P->Next = NULL;

Head = Rear = P;

for(i=0; i<N; i++)

{

tmp1 = (NodePtr)malloc(sizeof(struct Node));

scanf("%d",&tmp1->Data);

tmp1->Next = NULL;

Rear->Next = tmp1;

Rear = tmp1;

}

M = M % N;

for(i=0; i<M; i++)

{

tmp2 = (NodePtr)malloc(sizeof(struct Node));

tmp2->Data = Head->Next->Data;

tmp2->Next = NULL;

Rear->Next = tmp2;

Rear = tmp2;

Head = Head->Next;

}

tmp1 = Head->Next;

printf("%d",tmp1->Data);

for(tmp1=tmp1->Next;tmp1!=NULL;tmp1=tmp1->Next)

{

printf(" %d",tmp1->Data);

}

return 0;

}

基本上就是链表的一个小小应用,没什么难度。

浙江大学PTA 数据结构 习题2.2 数组循环左移 (20 分)相关推荐

  1. 7-2 数组循环左移(20分)(顺序表实现)

    题目描述: 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0 a1 - ...

  2. 习题3.12 另类循环队列 (20 分)

    习题3.12 另类循环队列 (20 分) 如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数.请编写算法实现队列的入队和出队操作. 函数 ...

  3. 7-31 字符串循环左移 (20 分)

    7-31 字符串循环左移 (20 分) 输入一个字符串和一个非负整数N,要求将字符串循环左移N次. 输入格式: 输入在第1行中给出一个不超过100个字符长度的.以回车结束的非空字符串:第2行给出非负整 ...

  4. 习题2.2 数组循环左移(20 分)浙大版《数据结构(第2版)》题目集

    本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a​0​​a​1​​⋯a​n ...

  5. PTA-6-1 数组循环右移 (20分)(C语言)

    函数接口定义: int ArrayShift( int a[], int n, int m ); 其中a[]是用户传入的数组:n是数组的大小:m是右移的位数.函数ArrayShift须将循环右移后的数 ...

  6. 浙大版《数据结构(第2版)》题目集 习题1.9 有序数组的插入 (20 分) 二分解法

    习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...

  7. 习题1.9 有序数组的插入 (20 分)

    习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...

  8. 算法 - 数组循环左移m个元素

    题目 整数数组,n个元素 数组循环左移m个元素 [1,2,3,4,5,6,7,8,9] -> [4,5,6,7,8,9,1,2,3] 思路 数组整体逆转 [1,2,3,4,5,6,7,8,9] ...

  9. 长度为n的整数数组循环左移右移m位

    长度为n的整数数组循环左移m位 右移m相当于左移n-m // pat.cpp : Defines the entry point for the console application. //#inc ...

最新文章

  1. 强!chrome彻底关闭自动升级新方法实例演示,终于解决了chrome自动升级的烦恼
  2. Fedora 15 16 17 18 20无线网卡驱动安装
  3. php获取页面a标签内容_AKCMS常用标签代码整理
  4. Babel 7 基础入门学习(详细版)
  5. 使用inetaddress测试目标可达性_PDPS软件机器人虚拟仿真:Smart Place功能介绍与使用方法...
  6. windows 2008 终端服务器配置,windows 2008终端服务器设置
  7. java定义一个静态类_Java中的静态类
  8. 邮件系统IP被CBL列黑,怎么样里面申诉呢?
  9. Java并发编程原理与实战十一:锁重入自旋锁死锁
  10. 著名的软件项目开发和生命周期管理软件MKS.Code.Integrity.Enterprise.Edition.v12
  11. 问题:C语言习题5.22 - 学生成绩的处理
  12. 小米笔记本装了linux后u盘启动不了,小米笔记本bios设置u盘启动教程
  13. WiFi漫游卡顿严重,如何有效改善实现无缝漫游
  14. 服务器server2012重置开机密码
  15. Luogu1039 侦探推理
  16. oracle job interval(关于时间误差)
  17. 见闻-关于codec芯片
  18. 故障案例 | 慢SQL引发MySQL高可用切换排查全过程
  19. Vue打包后图片路径问题
  20. 18年_PMO_实践

热门文章

  1. 15. 深入解析Pod对象(二):使用进阶
  2. UML建模【转http://www.cnblogs.com/gaojun/archive/2010/04/27/1721802.html】
  3. 克鲁斯卡尔重构树小结
  4. c# Net XML文档(2,2)中有错误
  5. 搭建Git本地服务器(转)
  6. 设置searchDisplayController的searchResultsTableView的UITableViewStyle为grouped
  7. C语言-排序-希尔排序
  8. 读高性能网站建设指南
  9. [数据库]oracle导出数据库
  10. 微信小程序接口测试时appid为空如何解决