Description
一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),借助元素移位的方式,设计一个空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。
注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能用一个循环语句实现,不能分成两个部分。
Input
第一行输入整数n,代表下面有n行输入;
之后输入n行,每行先输入整数len与整数m(分别代表本表的元素总数与前半表的元素个数),之后输入len个整数,代表对应顺序表的每个元素。
Output
输出有n行,为每个顺序表前m个元素与后(len-m)个元素交换后的结果
Sample
Input
2
10 3 1 2 3 4 5 6 7 8 9 10
5 3 10 30 20 50 80
Output
4 5 6 7 8 9 10 1 2 3
50 80 10 30 20
Hint

注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能在一次循环中完成,不能分成两个部分输出。

#include<bits/stdc++.h>using namespace std;#define maxsize 1000010typedef struct node
{int *elem;int length;int listsize;
}List;void creat(List &L, int n)//建表
{L.elem = (int *)malloc(maxsize * sizeof(int));//L.elem = new int elem[maxsize];for(int i = 0; i < n; i++){scanf("%d", &L.elem[i]);}L.length = n;L.listsize = maxsize;
}
void move_list(List &L, int n, int m)//核心算法
{for(int i = 0; i < m; i++)//相当于把顺序表扩充,把这个表的前m个元素移到表尾{L.elem[i + n] = L.elem[i];}L.length += m;//这里的意思是,这个链表相当于从m这个元素开始了,//新表自然就延长m。这个具体看遍历函数好理解
}
void display(List &L, int m)//遍历顺序表
{for(int i = m; i < L.length - 1; i++)//这里是从m开始printf("%d ", L.elem[i]);printf("%d\n", L.elem[L.length - 1]);
}
int main()
{int t, n, m;List L;scanf("%d", &t);while(t--){scanf("%d %d", &n, &m);creat(L, n);move_list(L, n, m);display(L, m);}return 0;
}

顺序表应用3:元素位置互换之移位算法相关推荐

  1. 元素位置互换之移位算法

    顺序表应用3:元素位置互换之移位算法 Time Limit: 1000 ms Memory Limit: 570 KiB Submit Statistic Problem Description 一个 ...

  2. 设计一个高效算法,将顺序表的所有元素逆置,要求算法空间复杂度为O(1)。

    void ReverseList(SqList *L) {while(i<length||i>=0){if(j=0;j<(length-1)/2;j++){a=L->data[ ...

  3. 顺序表应用4:元素位置互换之逆置算法

    这道题和顺序表应用4-2:元素位置互换之逆置算法(数据改进)的算法没差什么. Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该 ...

  4. 顺序表应用4-2:元素位置互换之逆置算法(数据改进)

    Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m< ...

  5. 顺序表之元素位置互换(改进版)

    顺序表应用4-2:元素位置互换之逆置算法(数据改进) Time Limit: 80 ms Memory Limit: 600 KiB Submit Statistic Problem Descript ...

  6. 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素

    题目 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素 #include<iostream>using namespace std; #define OK ...

  7. 顺序表-删除所有元素值为x结点(相等加一,不等前移k)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里要删除顺序表的所 ...

  8. 顺序表-插入一个元素x后保持该顺序表L递增有序排序(查找+元素后移插入)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 要保持插入一个元素后 ...

  9. C语言创建顺序表并插入元素 详细注释

    顺序表是用一组地址连续的存储单元依次存储数据元素的数据结构.顺序表是线性表的一种,线性表是最常用且最简单的一种数据结构,一个线性表是 n 个数据元素的有限序列.我们使用 c 语言来创建顺序表并插入元素 ...

最新文章

  1. HttpClient连接池设置引发的一次雪崩
  2. 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...
  3. 使对象具有ES6中Iterator接口的实现方法
  4. [转]Ubuntu SCIM 输入法不能光标跟随的解决
  5. 中国产业园区发展动态及前景趋势规划建议报告2022-2028年版
  6. 《iOS 应用逆向工程:分析与实战》 pdf 电子书分享
  7. apache的产品分类说明
  8. collections系列
  9. 重磅!2020中国高校毕业生月薪排名:清华第1,24高校过万,你呢?
  10. Mapping Text to Knowledge Graph Entities using Multi-Sense LSTMs
  11. 太强了,终于彻底搞懂 Nginx 的五大应用场景~
  12. [转帖]SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别
  13. 揭秘ASP.NET 2.0之Page.Eval
  14. DVWA教程详细的DVWA-CSRF全等级通关教程
  15. 在Linux下用sopcast/qsopcast收看网络电视
  16. 数据库无法插入Could not set property ‘id‘ of ‘class com.XXX‘ with value ‘1481832253064073217‘
  17. Fingerprint 解锁流程
  18. 关于视频图像dither
  19. 计算机与电气工程sci期刊,电气工程专业什么SCI期刊比较好
  20. 猪悟能淘宝商品下载专家v3版开发手记

热门文章

  1. arcgis-“一个或多个已经添加图层的范围与关联空间参考不一致”“Arcmap不能绘制一个或者多个图层”
  2. Java 编程语言中很少被人了解的特性-statement label
  3. 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
  4. EMR、EHR和PHR的定义与对比
  5. 数据仓库的架构与设计
  6. 基于Spring Boot和Spring Cloud实现微服务架构学习--转
  7. Apache Hadoop YARN – NodeManager--转载
  8. spring aop实现过程之一代理对象的生成
  9. linux下动态链接问题(so文件的编写与调用)
  10. doker zookeeper kafka单机搭建