浙江大学PTA 数据结构 习题2.2 数组循环左移 (20 分)
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(am⋯an−1a0a1⋯am−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 分)相关推荐
- 7-2 数组循环左移(20分)(顺序表实现)
题目描述: 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0 a1 - ...
- 习题3.12 另类循环队列 (20 分)
习题3.12 另类循环队列 (20 分) 如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数.请编写算法实现队列的入队和出队操作. 函数 ...
- 7-31 字符串循环左移 (20 分)
7-31 字符串循环左移 (20 分) 输入一个字符串和一个非负整数N,要求将字符串循环左移N次. 输入格式: 输入在第1行中给出一个不超过100个字符长度的.以回车结束的非空字符串:第2行给出非负整 ...
- 习题2.2 数组循环左移(20 分)浙大版《数据结构(第2版)》题目集
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0a1⋯an ...
- PTA-6-1 数组循环右移 (20分)(C语言)
函数接口定义: int ArrayShift( int a[], int n, int m ); 其中a[]是用户传入的数组:n是数组的大小:m是右移的位数.函数ArrayShift须将循环右移后的数 ...
- 浙大版《数据结构(第2版)》题目集 习题1.9 有序数组的插入 (20 分) 二分解法
习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...
- 习题1.9 有序数组的插入 (20 分)
习题1.9 有序数组的插入 (20 分) 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序. 函数接口定义: bool Insert( List L, ElementTy ...
- 算法 - 数组循环左移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] ...
- 长度为n的整数数组循环左移右移m位
长度为n的整数数组循环左移m位 右移m相当于左移n-m // pat.cpp : Defines the entry point for the console application. //#inc ...
最新文章
- 强!chrome彻底关闭自动升级新方法实例演示,终于解决了chrome自动升级的烦恼
- Fedora 15 16 17 18 20无线网卡驱动安装
- php获取页面a标签内容_AKCMS常用标签代码整理
- Babel 7 基础入门学习(详细版)
- 使用inetaddress测试目标可达性_PDPS软件机器人虚拟仿真:Smart Place功能介绍与使用方法...
- windows 2008 终端服务器配置,windows 2008终端服务器设置
- java定义一个静态类_Java中的静态类
- 邮件系统IP被CBL列黑,怎么样里面申诉呢?
- Java并发编程原理与实战十一:锁重入自旋锁死锁
- 著名的软件项目开发和生命周期管理软件MKS.Code.Integrity.Enterprise.Edition.v12
- 问题:C语言习题5.22 - 学生成绩的处理
- 小米笔记本装了linux后u盘启动不了,小米笔记本bios设置u盘启动教程
- WiFi漫游卡顿严重,如何有效改善实现无缝漫游
- 服务器server2012重置开机密码
- Luogu1039 侦探推理
- oracle job interval(关于时间误差)
- 见闻-关于codec芯片
- 故障案例 | 慢SQL引发MySQL高可用切换排查全过程
- Vue打包后图片路径问题
- 18年_PMO_实践
热门文章
- 15. 深入解析Pod对象(二):使用进阶
- UML建模【转http://www.cnblogs.com/gaojun/archive/2010/04/27/1721802.html】
- 克鲁斯卡尔重构树小结
- c# Net XML文档(2,2)中有错误
- 搭建Git本地服务器(转)
- 设置searchDisplayController的searchResultsTableView的UITableViewStyle为grouped
- C语言-排序-希尔排序
- 读高性能网站建设指南
- [数据库]oracle导出数据库
- 微信小程序接口测试时appid为空如何解决