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

Time Limit: 1000 ms Memory Limit: 570 KiB

Submit Statistic

Problem 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

Sample Output

4 5 6 7 8 9 10 1 2 3
50 80 10 30 20

#include <stdio.h>
#include <stdlib.h>
#include<bits/stdc++.h>
#define maxsize 10000
typedef int element;
typedef struct
{element *elem;int length;int listsize;
} sq;void initlist (sq &L)
{L.elem = (element *)malloc(maxsize*sizeof(element));L.length = 0;L.listsize = maxsize;}void cr(sq &L, int l)
{for(int i = 0; i < l; i++){scanf("%d",&L.elem[i]);L.length++;}L.listsize = maxsize;
}
void yidong(sq &L, int m)         //核心代码区
{while(m--){int a=L.elem[0];for(int i = 1; i < L.length; i++){L.elem[i-1] = L.elem[i];}L.elem[L.length-1] = a;}
}
void pr(sq &L)
{for(int i = 0; i < L.length; i++)if(i != L.length-1)printf("%d ",L.elem[i]);elseprintf("%d\n",L.elem[i]);
}int main()
{int n,m,t;scanf("%d",&n);while(n--){sq L;initlist(L);scanf("%d%d",&m,&t);cr(L,m);yidong(L,t);pr(L);}return 0;
}

元素位置互换之移位算法相关推荐

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

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

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

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

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

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

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

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

  5. A - 顺序表应用1:多余元素删除之移位算法

    Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据元素从顺序表中删 ...

  6. 顺序表应用1:多余元素删除之移位算法

    Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据元素从顺序表中删 ...

  7. 写出一段代码将链表中的两个节点位置互换位置_面试 leetcode 算法专题系列(二)—— 链表...

    前言:只照着常考题去刷题确实是一种方法.但调研之后发现自己还是考虑不周,刷题刷的不应该是题,而是解题的思路和熟练程度.于是我决定重新组织一下刷题笔记的讲解顺序,不再以面试常考题来刷.而是以面试出题频率 ...

  8. Vue实现DOM元素拖放互换位置

    一.拖放和释放 HTML 拖放接口使得 web 应用能够在网页中拖放文件.这里将介绍了 web 应用如何接受从底层平台的文件管理器拖动DOM的操作. 拖放的主要步骤是为 drop 事件定义一个释放区( ...

  9. 从n返回k个元素的所有组合的算法

    我想编写一个函数,该函数采用字母数组作为参数,并选择多个字母. 假设您提供8个字母的数组,并希望从中选择3个字母. 然后您将获得: 8! / ((8 - 3)! * 3!) = 56 返回由3个字母组 ...

最新文章

  1. 目标检测别再刷榜了,让流感知来展示真正的技术!ECCV 2020 最佳论文提名
  2. Linux下C语言的系统头文件
  3. pae扩展内存 linux,浅析linux内核内存管理之PAE
  4. 华侨大学计算机学院2019,华侨大学计算机科学与技术学院2019年非全日制研究生复试成绩(第四批)...
  5. 分享:从功能增强说起
  6. [swift] LeetCode 136. Single Number
  7. 使用Lambda解决_inbound_nodes错误
  8. PostgreSQL逻辑优化——整体架构
  9. PPT扩展展示时,PPT展示界面背景色有时候突然变成黑底?如何解决?
  10. 作为一个程序员,数学对你到底有多重要
  11. 驱动大师服务器获取信息失败,360驱动大师、鲁大师,连测硬件信息都不准,我拿什么信你们...
  12. MATLAB 内积外积混合积
  13. 如何通过IP共享文件
  14. c语言编译器w7,wintc下载|c语言编译器wintc win7/win8兼容版 v2.0下载 64位32位 - 3322软件站...
  15. 数据分析实战 -- 股票量化交易分析
  16. 2016猴年春联集锦
  17. 365天挑战LeetCode1000题——Day 012 每日一题
  18. How to test Neutron VRRP HA rapidly (by quqi99)
  19. potatso lite怎么添加代理_「科技犬」除了苹果AirPods,真无线蓝牙耳机到底怎么选?_蓝牙耳机...
  20. 计算机属于电器还是学习用品,未来的学习用品作文

热门文章

  1. python cryptography key加密_python3利用cryptography 进行加密和解密
  2. 如何避免_小红书如何避免降权!
  3. html自适应布局_三分钟学会响应式布局和自适应布局
  4. 数据挖掘原理与算法 Agnes算法
  5. 【论文笔记】K-plet Recurrent Neural Networks for Sequential Recommendation
  6. 子序列问题sequence(【CCF】NOI Online能力测试2 提高组第二题 )
  7. 人工智能——自动驾驶仿真软件
  8. 【已解决】能连接上无线,但打不开网页怎么办?
  9. 【已解决】ffmpy3.FFExecutableNotFoundError: Executable ‘ffmpeg‘ not found
  10. Tensorflow高级封装