C语言实验——数组逆序
2016-08-11 20:05
886 查看
题目描述
有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 <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
const int maxsize = 10000;
typedef int elemtype;
typedef struct Stack
{
int Size;
elemtype *top,*base;
} Stack;
bool Empty(Stack &s)//判断是否为空栈;
{
if (s.top == s.base)
{
return 1;
}
return 0;
}
void Creat(Stack &s)//栈的初始化;
{
s.base=new elemtype[maxsize];///
s.top=s.base;
// s.top++;
// s.base++;
s.Size=maxsize;
}
void push(Stack &s,elemtype e)//进栈;
{
if (s.top-s.base >= s.Size)
{
s.base=(elemtype *)realloc(s.base,2*maxsize*sizeof(Stack));
s.Size+=maxsize;
///s.top=s.base+s.Size;
}
s.top++;
*s.top=e;
}
void pop(Stack &s)//出栈
{
if (s.top != s.base)
{
s.top--;
}
}
void print(Stack &s)//栈内所有元素的输出;
{
while (!Empty(s))
{
cout<<*s.top;
pop(s);
}
cout<<endl;
}
void Clear(Stack &s)//清空栈;
{
while (!Empty(s))
{
pop(s);
}
}
void exch(Stack &s,int a[],int m,int n)//数组前每m个元素和过后m个元素互换位置;
{
int i;
for (i=n; i>n-m; i--)
{
push(s,a[i]);
}
while(!Empty(s))
{
cout<<*s.top<<" ";
s.top--;
}
for (i=n-m; i>=1; i--)
{
push(s,a[i]);
}
while(!Empty(s))
{
cout<
4000
;<*s.top;
s.top--;
if (!Empty(s))
{
cout<<" ";
}
}
cout<<endl;
}
int main()
{
int a[1000];
int m,i,n;
Stack s;
Creat(s);
cin>>n;
for (i=1; i<=n; i++)
{
cin>>a[i];
}
cin>>m;
exch(s,a,m,n);//数组前每m个元素和过后m个元素互换位置;
print(s);
return 0;
}
相关文章推荐
- C语言实验——数组逆序
- C语言实验——数组逆序
- C语言实验——数组逆序
- C语言实验——数组逆序
- SDUT-1186 C语言实验——数组逆序
- Problem H: C语言实验——数组逆序
- 第十四周-C语言实验——数组逆序
- C语言实验——数组逆序 (sdut oj)
- C语言实验——数组逆序
- 第十三周 C语言实验——数组逆序
- C语言实验——数组逆序
- 实验6 数组2(输入n个整数,存入数组a中,分别按正序和逆序输出这些数;)
- 山东理工大学ACM平台题答案 1178C语言实验——数组逆序
- 栈实验之数组逆序
- C语言实验题——数组逆序
- C语言实验——数组逆序 (sdut oj)
- 实验6——2输入n个整数,存入数组a中,分别按正序和逆序输出这些数
- 实验6 数组1 输入n个整数,存入数组a中,分别按正序和逆序输出这些数
- oj第十四周实践C语言实验——数组逆序(2000)
- C语言实验-数组逆序