顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换
作者: 冯向阳 时间限制: 1S 章节: DS:线性表

问题描述 :

目的:使用自行设计的顺序表ADT或STL中的vector模板,设计并实现顺序表应用场合的一些简单算法设计。

应用1:试设计一个算法,用尽可能少的辅助空间将非空顺序表中前 m 个元素和后 n 个元素进行互换,即将线性表(a1,a2,…,am,b1,b2,…,bn) 改变成(b1,b2,…,bn,a1,a2,…,am)。假定m始终是有效值。

参考函数原型:
(1)顺序表ADT版本
template
void Exchange( SqList &A, int m ); // 本算法实现顺序表中前 m 个元素和后 n 个元素的互换

(2)vector版本
template
void Exchange( vector &A, int m );// 本算法实现顺序表中前 m 个元素和后 n 个元素的互换

输入说明 :

第一行:顺序表的数据元素类型标记(0:int;1:double;2:char;3:string;其余值:输出err)
第二行:待处理顺序表的数据元素(数据元素之间以空格分隔)
第三行:逆置位置m

输出说明 :

第一行:逆置前顺序表的遍历结果(数据元素之间以“,”分隔)
空行
第三行:逆置后顺序表的遍历结果(数据元素之间以“,”分隔)

输入范例 :
0
13 5 27 9 32 123 76 98 54 87
5

输出范例 :

13,5,27,9,32,123,76,98,54,87

123,76,98,54,87,13,5,27,9,32

我写的是顺序表的版本

具体AC代码:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。const int MAXSIZE=100;            //顺序表可能达到的最大长度template<class ElemType>
class SqList
{private:ElemType *elem;   // 存储空间基址int length;               // 当前长度
public://初始化顺序表SqList();SqList(ElemType a[],int n);//析构顺序表~SqList();void Exchange( SqList<ElemType> &x, int m );Status ListInsert_push(ElemType e);//返回顺序表的长度int GetLength(){return length;}
};template<class ElemType>
SqList<ElemType>::SqList()
{//构造一个空的顺序表Lelem = new ElemType[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间length = 0; //空表长度为0
}template<class ElemType>
SqList<ElemType>::SqList(ElemType a[],int n)
{// 本算法生成顺序表elem = new ElemType[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间for(int i = 0; i < n; i++){elem[i]=a[i];}length=n;
}
template<class ElemType>
SqList<ElemType>::~SqList()
{//销毁顺序表//需要为SqList类实现拷贝构造函数和重载等于号,才可以在析构函数中delete顺序表,否则程序可能崩溃,因此这里暂时将delete语句注释掉了//delete elem;//length = 0;
}template<class ElemType>
void SqList<ElemType>::Exchange( SqList<ElemType> &x, int m )
{//前m个元素和后n个元素互换的函数SqList<ElemType> a;for(int i=0;i<m;i++){a.elem[i] = x.elem[i];a.length++;}for(int i=m;i<x.length;i++){x.elem[i-m] = x.elem[i];}for(int i=x.length-m,j=0;i<x.length;i++,j++){x.elem[i] = a.elem[j];}
}template<class ElemType>
Status SqList<ElemType>::ListInsert_push(ElemType e)
{if (length == MAXSIZE)return ERROR; //当前存储空间已满if(length == 0)elem[0] = e;elseelem[length] = e;             // 插入e++ length;                         // 表长增1return OK;
} // ListInsert_pushtemplate<class ElemType>
void SqList<ElemType>::ListTraverse()
{//打印顺序表for(int i = 0; i < length-1; i++){cout<<elem[i]<<",";}cout<<elem[length-1]<<endl;
}int main()
{int x;int m;cin>>x;switch(x){case 0:{int a;int z[100];int num=0;while(1){cin>>a;z[num++] = a;if(cin.get() == '\n')break;}SqList<int> z0(z,num);z0.ListTraverse();cout<<endl;cin >> m;z0.Exchange(z0, m);z0.ListTraverse();break;}case 1:{double a;double z[100];int num=0;while(1){cin>>a;z[num++] = a;if(cin.get() == '\n')break;}SqList<double> z1(z,num);z1.ListTraverse();cout<<endl;cin >> m;z1.Exchange(z1, m);z1.ListTraverse();break;}case 2:{char a;char z[100];int num=0;while(1){cin>>a;z[num++] = a;if(cin.get() == '\n')break;}SqList<char> z2(z,num);z2.ListTraverse();cout<<endl;cin >> m;z2.Exchange(z2, m);z2.ListTraverse();break;}case 3:{string a;string z[100];int num=0;while(1){cin>>a;z[num++] = a;if(cin.get() == '\n')break;}SqList<string> z3(z,num);z3.ListTraverse();cout<<endl;cin >> m;z3.Exchange(z3, m);z3.ListTraverse();break;}default:cout<<"err"<<endl;}return 0;
}

是基于Turbo老师的代码改的

顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换相关推荐

  1. 【顺序表】13 顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换

    问题描述 : 目的:使用自行设计的顺序表ADT或STL中的vector模板,设计并实现顺序表应用场合的一些简单算法设计. 应用1:试设计一个算法,用尽可能少的辅助空间将非空顺序表中前 m 个元素和后 ...

  2. 用计算机怎么做成绩表,利用Excel制作一个简单的学生成绩表.doc

    利用Excel制作一个简单的学生成绩表 教学设计表 学科 信息技术 授课年级 八年级 学校 教师姓名 章节名称初中信息技术八年级上册第7课(第1节)计划学时1学时学习内容分析学习Excel的基础知识, ...

  3. html表单模板属性,HTML5超酷响应式表单美化模板插件

    这是一款非常效果非常酷的HTML5超酷响应式表单美化效果插件.表单的整体效果使用扁平化风格,使用media queries来为各种屏幕创建响应式效果.在大屏幕上,整个表单分三列显示,当屏幕小到一定程度 ...

  4. html表单input file,最简单的方法美化表单中input type=file元素

    今天2019-10-8日,国庆后第一天上班. 恩,早上列了下要做的东西,不至于长假后,啥都忘了,该走的路得继续走,该做的继续做. 回归正题,昨天做验证码识别表单时,发现 file 表单真是奇丑无比,琢 ...

  5. DHU数据结构-顺序表- ADT应用-前m个元素后置

    目录 1.题目 2.题解 3.代码实现 4.改进 1.题目 顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换 作者: 冯向阳时间限制:  1S章节: DS:线性表 问题 ...

  6. DHU数据结构-顺序表- ADT应用-找出两个等长升序序列的中位数

    目录 1.题目 2.题解 3.代码实现 1.题目 顺序表ADT模板简单应用算法设计:找出两个等长升序序列的中位数 作者: 教材 时间限制: 1S 章节: DS:线性表 问题描述 : 目的:使用自行设计 ...

  7. 界面设计方法 (1) — 5. 表单功能的设计

    表单功能,是4大业务功能(活动.字典.看板和表单)中的最后一个,它是各类订货.收货的凭证,是企业月度.季度和年度统计.分析的重要参考资料,是国家.企业等指定要打印.盖章交付和保存的重要形式,同时也是企 ...

  8. oa导入表格html,点晴OA工作流表单模板创建注意事项(Word、Excel复制粘贴变形如何解决)...

     点晴OA工作流表单模板创建注意事项(Word.Excel复制粘贴变形如何解决) 很多用户反映点晴OA系统中工作流表单创建时对于表格的控制十分的麻烦,希望能够做出漂亮的效果,但往往事违人愿.下面将工作 ...

  9. 计算机程序设计表单,表单模板和表单简介

    表单模板的组件 表单模板是单个文件包含多个支持文件,例如定义表单模板上的控件的显示方式,显示在表单模板的图形文件的文件和编程启用自定义窗体中的行为的文件模板.为表单文件统称以下支持的文件.在设计表单模 ...

最新文章

  1. python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图)
  2. 【Prince2科普】P2七大主题之组织
  3. MongoDB 日志切换(Rotate Log Files)实战
  4. 【笔记】buck/boost/buck-boost相关计算公式
  5. 【NLP】5 分钟理解百度 ERNIE 核心思想
  6. 2运行内存多大_电脑笔记本满血复活之内存升级篇
  7. java取网页源码_Java获取任意http网页源代码的方法
  8. 【计蒜客 - 蓝桥训练】蒜厂年会(单调队列优化dp,循环数列的最大子段和)
  9. python 简单trace 过滤处理
  10. python中的map、filter、reduce函数
  11. 修改MySql默认编码
  12. POI--各种样式的XSSFCellStyle的生成
  13. Hbase 二级索引示意图
  14. 一文详解Adobe Photoshop 2020安装教程
  15. Windows证书对话框权限提升漏洞-CVE-2019-1388
  16. R语言数据可视化-条形图
  17. swift之汤姆猫实现(UIImageView动画播放)
  18. 强化学习经典应用环境-Atari 2600游戏合集
  19. python:彩色照转黑白照
  20. The error may involve XXX(包)-Inline The error occurred while setting parameters

热门文章

  1. 校园网络的组建与设计——计算机网络大作业【计算机高级应用】
  2. mysql查询1万条数据要1秒钟_SQL查询效率:100万数据查询只需要1秒钟
  3. Python:loc和iloc的区别
  4. 二级域名做网站有哪些优势?
  5. 工具 | Doxygen的使用详解
  6. 〔转载〕从蓝色巨人到四海一家 IBM品牌塑造及转型
  7. **区块链培训步入标准化阶段,比特大学开启系统性学习课程**
  8. 使用Fragment
  9. 简练软考知识点整理-控制进度管理过程
  10. SpringCloud五大神兽快速入门