数据结构——顺序表逆置之移位算法
2017-10-05 19:11
197 查看
顺序表应用3:元素位置互换之移位算法
Time Limit: 1000MS Memory Limit: 570KBSubmit 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)个元素交换后的结果
Example Input
2 10 3 1 2 3 4 5 6 7 8 9 10 5 3 10 30 20 50 80
Example Output
4 5 6 7 8 9 10 1 2 3 50 80 10 30 20
01 | #include<stdio.h> |
02 | #include<stdlib.h> |
03 | #define maxsize 1000000 |
04 | typedef struct |
05 | { |
06 | int data[maxsize]; |
07 | int last; |
08 | } sl; |
09 | sl |
10 | { |
11 | sl *l; |
12 | l=(sl*) malloc ( sizeof (sl)); |
13 | l->last=-1; |
14 | return l; |
15 | } |
16 | sl *build(sl *l, int n) //顺序表数据输入函数 |
17 | { |
18 | int i; |
19 | for (i=0; i<n; i++) |
20 | { |
21 | scanf ( "%d" ,&l->data[i]); |
22 | } |
23 | l->last=n-1; |
24 | return l; |
25 | } |
26 | sl *change(sl *l, int m) //顺序表逆置函数 |
27 | { |
28 | int i,j; |
29 | int a; |
30 | for (i=1;i<=m;i++) |
31 | { |
32 | a=l->data[0]; |
33 | for (j=0;j<l->last;j++) |
34 | { |
35 | l->data[j]=l->data[j+1]; |
36 | } |
37 | l->data[l->last]=a; |
38 | } |
39 | return l; |
40 | } |
41 | void show(sl *l, int n) //顺序表输出函数 |
42 | { |
43 | int i; |
44 | for (i=0; i<=l->last; i++) |
45 | { |
46 | if (i!=l->last) |
47 | printf ( "%d " ,l->data[i]); |
48 | else |
49 | printf ( "%d\n" ,l->data[i]); |
50 | } |
51 | } |
52 | int main() |
53 | { |
54 | sl *l; |
55 | int n,x,m; |
56 | scanf ( "%d" ,&n); |
57 | while (n--) |
58 | { |
59 | scanf ( "%d %d" ,&x,&m); |
60 | l=makeempty(); |
61 | l=build(l,x); |
62 | change(l,m); |
63 | show(l,m); |
64 | } |
65 | return 0; |
66 | } |
67 |
68 |
69 | /*************************************************** |
70 | User name: jk160618郭衣鹏 |
71 | Result: Accepted |
72 | Take time: 52ms |
73 | Take Memory: 200KB |
74 | Submit time: 2017-10-05 19:09:23 |
75 | ****************************************************/ |
相关文章推荐
- 数据结构顺序表应用3:元素位置互换之移位算法然而我的思路跟移位没关系
- java 中的JDK封装的数据结构和算法解析(集合类)----顺序表 List 之 ArrayList
- 顺序表应用3:元素位置互换之移位算法
- SDUT-顺序表应用3:元素位置互换之移位算法
- 数据结构25:矩阵转置算法(三元组顺序表)
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- sdut oj3324 顺序表应用1:多余元素删除之移位算法
- SDUT3326顺序表应用3:元素位置互换之移位算法
- 算法与数据结构课程中的c++实现的顺序表和链表
- 【源代码】C++实现严蔚敏数据结构所有算法(一)线性表-顺序表
- 暑假集训二顺序表-顺序表应用1:多余元素删除之移位算法
- PHP数据结构与算法:顺序表
- [SDUT](3324)顺序表应用1:多余元素删除之移位算法 ---顺序存储(线性表)
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 数据结构第八周项目——顺序表算法
- 3326顺序表应用3:元素位置互换之移位算法
- 3326顺序表应用3:元素位置互换之移位算法