您的位置:首页 > 其它

栈实验之数组逆序

2016-08-01 10:14 225 查看

题目描述

有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m < n < 100)个位置。

输入

输入数据有2行,第一行的第一个数为n,后面是n个整数,第二行整数m。

输出

按先后顺序输出n个整数。

示例输入

5 1 2 3 4 5
2


示例输出

4 5 1 2 3
 

#include <stdio.h>

#include <stdlib.h>

#define maxsize 100

#define sizenum 100

typedef int element;

typedef struct

{

   element *top;

   element *base;

   int stsize;

}sq;

int intistack(sq*s)

{

   s->base=(element*)malloc(maxsize*sizeof(element));

   if(!s->base)

    return -1;

   s->top=s->base;

   s->stsize=maxsize;

   return 0;

}

int push(sq*s,int k)

{

   if(s->top-s->base>s->stsize)

   {

     s->base=(element*)realloc(s->base,(s->stsize+sizenum)*sizeof(element));

     if(!s->base)

        return -1;

     s->top=s->base+sizenum;

     s->stsize+=sizenum;

   }

   *(++s->top)=k;

   return 0;

}

int main()

{

    int n,m,i,a[maxsize];

    sq s;

    scanf("%d",&n);

    for(i=1;i<=n;i++)

        scanf("%d",&a[i]);

    scanf("%d",&m);

    intistack(&s);

    for(i=n-m+1;i<=n;i++)

    {

       push(&s,a[i]);

    }

    while(s.top>s.base)

    {

       printf("%d ",*(++s.base));

    }

    for(i=1;i<=n-m;i++)

        printf("%d ",a[i]);

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: