顺序表逆置 实现前m与后len-m的互换
来源:互联网 发布:四轴飞行器控制算法 编辑:程序博客网 时间:2024/06/05 08:47
Time Limit: 80MS Memory Limit: 600KB
Submit Statistic
Problem Description
一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N)、空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。
注意:交换操作会有多次,每次交换都是在上次交换完成后的顺序表中进行。
Input
第一行输入整数len(1<=len<=1000000),表示顺序表元素的总数;
第二行输入len个整数,作为表里依次存放的数据元素;
第三行输入整数t(1<=t<=30),表示之后要完成t次交换,每次均是在上次交换完成后的顺序表基础上实现新的交换;
之后t行,每行输入一个整数m(1<=m<=len),代表本次交换要以上次交换完成后的顺序表为基础,实现前m个元素与后len-m个元素的交换;
Output
输出一共t行,每行依次输出本次交换完成后顺序表里所有元素。
Example Input
101 2 3 4 5 6 7 8 9 -13235
Example Output
3 4 5 6 7 8 9 -1 1 26 7 8 9 -1 1 2 3 4 51 2 3 4 5 6 7 8 9 -1
#include <stdio.h>#include <stdlib.h>#define maxlist 1000005typedef int ElemType;typedef struct{ ElemType *elem; int length; int listsize;}SqList;int InitList(SqList * L){ L->elem = (ElemType * )malloc(maxlist * sizeof(ElemType)); if(!L->elem) return -1; L->length = 0; L->listsize = maxlist; return 0;}void Create(SqList * L,int n){ int i; for(i = 0;i <= n - 1;i++) { scanf("%d",&L->elem[i]); } L->length = n;}void Change(SqList * L,int l,int r,int mid){ int x,i; for(i = 0;i < mid;i++) { x = L->elem[l]; L->elem[l++] = L->elem[r]; L->elem[r--] = x; }}void Display(SqList * L){ int i; for(i = 0;i <= L->length - 2;i++) { printf("%d ",L->elem[i]); } printf("%d\n",L->elem[i]);}int main(){ int n; scanf("%d",&n); SqList L; InitList(&L); Create(&L,n); int m; scanf("%d",&m); while(m--) { int k; scanf("%d",&k); Change(&L,0,n - 1,n/2); Change(&L,0,n - k - 1,(n - k)/2); Change(&L,n - k,n - 1,k/2); Display(&L); } return 0;}
阅读全文
0 0
- 顺序表逆置 实现前m与后len-m的互换
- 第13周 数据结构(上海交大) 5-3 前m与后n个元素整体互换
- 线性表的顺序表 实现,及应用-----西文排序+前m个元素和后n个元素进行整体互换+构造纯集合+有序表求纯集合+循环有序链表表示两集合的并集
- 顺序表位置互换,A[m+n]
- Java实现获取前/后N天,跨度M,的日期/月份期的函数
- 华为机试题:有10个整数,使前面格数顺序向后移m个位置,最后m个数变成最前面m个数。计算移动后的整数序列的前m个数和后m个数的和。
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- 前m大的数
- UVA11375 递推+大数
- opencv-python(6):图像上的算术运算
- node.js爬虫小例子
- C++PRIMER第四章练习
- thinkphp5.0.9连接db数据库
- 顺序表逆置 实现前m与后len-m的互换
- iOS11&iPhoneX适配&Xcode9打包注意事项
- 用construct2制作游戏
- Hibernate学习总结
- 这个游戏的名字叫:哒哒哒哒哒哒
- hdu5952-搜索&剪枝&别人都A系列&技巧-Counting Cliques
- 超实微积打先锋,理论自信做后盾
- codevs 1324 昂贵的聘礼
- 计算机网络