数据结构——顺序表逆置之移位算法

来源:互联网 发布:非常嫌疑犯影评知乎 编辑:程序博客网 时间:2024/05/16 10:45

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

Time Limit: 1000MS Memory Limit: 570KB
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)个元素交换后的结果

Example Input

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

Example Output

4 5 6 7 8 9 10 1 2 350 80 10 30 20
01#include<stdio.h>
02#include<stdlib.h>
03#define maxsize 1000000
04typedef struct
05{
06    int data[maxsize];
07    int last;
08} sl;
09sl *makeempty()                      //顺序表初始化函数
10{
11    sl *l;
12    l=(sl*)malloc(sizeof(sl));
13    l->last=-1;
14    return l;
15}
16sl *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}
26sl *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}
41void 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}
52int 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/***************************************************
70User name: jk160618郭衣鹏
71Result: Accepted
72Take time: 52ms
73Take Memory: 200KB
74Submit time: 2017-10-05 19:09:23
75****************************************************/

阅读全文
0 0
原创粉丝点击