题目描述

有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<<*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语言实验——数组逆序相关推荐

  1. 7-301 sdut- C语言实验-数组逆序(数组移位)

    7-301 sdut- C语言实验-数组逆序(数组移位) 分数 16 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m ...

  2. S - C语言实验——数组逆序

    Description 有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m < n < 100)个位置. Input 输入数据有2行,第一行的第一个数为n,后面是n个整 ...

  3. (c语言)将一个数组逆序输出

    (c语言)将一个数组逆序输出 #include<stdio.h> #include<stdlib.h> int main(){int arr[10]={0,2,5,7,9,10 ...

  4. 每日程序C语言29-将数组逆序输出

    题目: 将一个数组逆序输出 程序分析 可以借用另一个数组,来存放当前数组的逆序 也可以让当前数组的首元素和末尾元素互换,第二个元素和倒数第二个元素互换,依次进行 主要代码 void fun1(int ...

  5. 【c语言】数组逆序排列

    问题描述 编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中.当用户输入0时,表示输入结束.然后程序将把这个数组中的值按逆序重新存放,并打印出来.要求:(1)只能定义一个数组:( ...

  6. C语言基础-数组逆序输出

    题目描述 输入一个数组的长度并输入数组中的内容,将数组中的内容逆序打印出来 输入 第一行为数组长度 第二行为数组中的内容 输出 输出一行,逆序打印数组内容 样例输入 5 1 2 3 4 5 样例输出 ...

  7. c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!

    趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...

  8. C语言编程>第三周 ⑦ 将一个数组逆序输出。

    例题:将一个数组逆序输出. 代码如下: /*程序分析:用第一个与最后一个交换.*/ #include<stdio.h> #define N 5 int main() {int a[N]={ ...

  9. 数组逆序重放c语言,计算概论(A)/基础编程练习2(8题)/6:数组逆序重放

    #include int main() { // 输入n个整数 int n,array[n],count=-; scanf("%d", &n); // 循环读入元素 whi ...

最新文章

  1. linux下卸载自带jdk,重新安装jre运行环境
  2. 小师妹学JavaIO之:Buffer和Buff
  3. Linux系统初级优化
  4. Xtrabackup备份MySQL
  5. Hadoop(五)HBase基础
  6. git解决 “fatal: Could not read from remote repository.“
  7. 响应式网站导航html,jQuery和CSS3响应式网站导航幻灯片插件
  8. linux下scrt依赖包libssl1.0.0解决方法
  9. DNS与NS、NS记录
  10. soul软件的简单分析
  11. mysql怎么在查询_Mysql查询操作
  12. APP支付宝登录第三方授权如何签约入口在哪里
  13. 常用生物信息 ID 及转换方法
  14. Quartus Prime Standard 18.1下载 安装流程
  15. 使用python实现微博评论分词与关键词提取(从MySQL数据库中读取数据)
  16. 3418 杨辉三角形(找规律 + 二分)
  17. (纪中)2246. 恐怖分子(gun)
  18. 硬盘插在苹果电脑上显示不出来怎么办? 苹果电脑怎么扩容硬盘?
  19. 微信小程序学习总结(4.wx:if按钮切换)
  20. 统计推断第三章20200601

热门文章

  1. php3绕过,PHPB2B注入#3(绕过过滤)
  2. 基于matlab的pcb焊盘,EDA复习题
  3. android时间最大,Android TimePickerDialog设置最大时间
  4. canvas 插件_基于Angular的Canvas手写签名插件
  5. python pyquery.get()_Python爬虫之PyQuery使用(六)
  6. open表和closed表_011 Ruby 多Word表写入Excel
  7. 计算机专业大学排名_U.S.News全美大学排名出炉:UCLA超越伯克利;计算机MIT排第一,斯坦福跌出前四...
  8. MFC中的动态创建与运行时识别
  9. 第六篇:如何学习C语言?
  10. python制作表白神器_python制作exe可执行表白神器-Go语言中文社区