顺序表应用3:元素位置互换之移位算法
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:元素位置互换之移位算法相关推荐
- 元素位置互换之移位算法
顺序表应用3:元素位置互换之移位算法 Time Limit: 1000 ms Memory Limit: 570 KiB Submit Statistic Problem Description 一个 ...
- 设计一个高效算法,将顺序表的所有元素逆置,要求算法空间复杂度为O(1)。
void ReverseList(SqList *L) {while(i<length||i>=0){if(j=0;j<(length-1)/2;j++){a=L->data[ ...
- 顺序表应用4:元素位置互换之逆置算法
这道题和顺序表应用4-2:元素位置互换之逆置算法(数据改进)的算法没差什么. Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该 ...
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m< ...
- 顺序表之元素位置互换(改进版)
顺序表应用4-2:元素位置互换之逆置算法(数据改进) Time Limit: 80 ms Memory Limit: 600 KiB Submit Statistic Problem Descript ...
- 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素
题目 在顺序表中第五个位置插入一个元素9,实现顺序表插入的基本操作,输出顺序表中所有元素 #include<iostream>using namespace std; #define OK ...
- 顺序表-删除所有元素值为x结点(相等加一,不等前移k)
顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里要删除顺序表的所 ...
- 顺序表-插入一个元素x后保持该顺序表L递增有序排序(查找+元素后移插入)
顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 要保持插入一个元素后 ...
- C语言创建顺序表并插入元素 详细注释
顺序表是用一组地址连续的存储单元依次存储数据元素的数据结构.顺序表是线性表的一种,线性表是最常用且最简单的一种数据结构,一个线性表是 n 个数据元素的有限序列.我们使用 c 语言来创建顺序表并插入元素 ...
最新文章
- HttpClient连接池设置引发的一次雪崩
- 每个c语言程序写完后 都要按照,c语言基础学习小结(习题总结)(5页)-原创力文档...
- 使对象具有ES6中Iterator接口的实现方法
- [转]Ubuntu SCIM 输入法不能光标跟随的解决
- 中国产业园区发展动态及前景趋势规划建议报告2022-2028年版
- 《iOS 应用逆向工程:分析与实战》 pdf 电子书分享
- apache的产品分类说明
- collections系列
- 重磅!2020中国高校毕业生月薪排名:清华第1,24高校过万,你呢?
- Mapping Text to Knowledge Graph Entities using Multi-Sense LSTMs
- 太强了,终于彻底搞懂 Nginx 的五大应用场景~
- [转帖]SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别
- 揭秘ASP.NET 2.0之Page.Eval
- DVWA教程详细的DVWA-CSRF全等级通关教程
- 在Linux下用sopcast/qsopcast收看网络电视
- 数据库无法插入Could not set property ‘id‘ of ‘class com.XXX‘ with value ‘1481832253064073217‘
- Fingerprint 解锁流程
- 关于视频图像dither
- 计算机与电气工程sci期刊,电气工程专业什么SCI期刊比较好
- 猪悟能淘宝商品下载专家v3版开发手记
热门文章
- arcgis-“一个或多个已经添加图层的范围与关联空间参考不一致”“Arcmap不能绘制一个或者多个图层”
- Java 编程语言中很少被人了解的特性-statement label
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
- EMR、EHR和PHR的定义与对比
- 数据仓库的架构与设计
- 基于Spring Boot和Spring Cloud实现微服务架构学习--转
- Apache Hadoop YARN – NodeManager--转载
- spring aop实现过程之一代理对象的生成
- linux下动态链接问题(so文件的编写与调用)
- doker zookeeper kafka单机搭建