7-7 软硬车厢交替排列 (40 分)

设车辆厂生产了硬座车厢和软座车厢共n节(混合在一起),要求使用队列的基本操作,编程实现所有硬座车厢和所有软座车厢交替排列。

例如硬座车厢用H来表示,软座车厢用S来表示,

从键盘上输入8节车厢代号为SHHSSHSS ,输出为HSHSHSSS。

若从键盘输入8节车厢代号为SHHSHHSH ,输出为HSHSHSHH。

输入格式:

第一行输入硬座和软座车厢共有的节数,2<=节数<=10; 第二行按节数输入车厢代号。

输出格式:

若车厢节数超出合法范围,输出“ERROR”,否则输出H和S车厢交替排列结果,注意输出结果以H开头。

输入样例:

8
SHHSSHSS

输出样例:

HSHSHSSS

AC代码

#include<iostream>
using namespace std; struct Queue
{
char *data;
int top;
int base; };
int InitQueue(Queue &Q)
{
Q.data = new char[10];
Q.top = 0;
Q.base = 0;
return 1;
}
int QueueLength(Queue &Q) //队列长度
{
return (Q.top-Q.base);
}
int EnQueue(Queue &Q,char a) //入队
{
Q.data[Q.top++]=a;
return 1;
}
char DeQueue(Queue &Q)//出队
{
return Q.data[Q.base++];
} int main()
{
Queue qh;
Queue qs; InitQueue(qh);
InitQueue(qs); int num;
cin>>num;
if(num>10||num<2){ //非法结束
cout<<"ERROR"<<endl;
return 0;
}
char ch[50];
cin>>ch;
for (int i = 0; i < num; i++)//H S 分别入队
{
if(ch[i]=='H') EnQueue(qh,ch[i]);
else EnQueue(qs,ch[i]);
} while (qs.base!=qs.top && qh.base!=qh.top)
{
cout<<DeQueue(qh)<<DeQueue(qs);//同时输出
}
if(qs.base==qs.top){ //更长的队输出
while (qh.base!=qh.top)
{
cout<<DeQueue(qh);
} }
else{
while (qs.base!=qs.top)
{
cout<<DeQueue(qs);
} } cout<<endl;
return 0;
}

最新文章

  1. iOS网络监测方法
  2. Atitit.&#160;Atiposter&#160;发帖机&#160;新特性&#160;poster&#160;new&#160;feature&#160;&#160;&#160;v7&#160;q39
  3. AC日记——阶乘之和 洛谷 P1009(高精度)
  4. 序列GCD和问题(题目)
  5. [C/C++]C++标准中的名词
  6. frequentism-and-bayesianism-chs-iv
  7. CentOS7修改服务器主机名方法
  8. html5的一些表单属性
  9. ubuntu14_gtk 安装
  10. PAT 1003. Emergency (25)
  11. CPU与外设传送数据方式
  12. 最常用的Eclipse快捷键【转载】
  13. APP分享抓取网页图片
  14. Cordova/Ionic Android 开发环境搭建 - Windows系统
  15. C语言链表:删除有序链表中大于mink小于maxk的元素
  16. deepin下codeblocks更改调试终端
  17. CSS样式学习-2
  18. log4jdbc 与 logback 集合打印日志过多的解决
  19. iOS刻度尺换算之1mm等于多少像素理解
  20. Java+Oracle实现事务——JDBC事务

热门文章

  1. Fiddle 简单用法
  2. 记录自己在对订单进行按日期查询时使用的一种查询的方法,这里的orders是订单表,你也可以改成别的什么表对于最终数据不会造成影响,除非你那个表的数据只有几条那样就会出现查不到日期的情况
  3. 5-6:实现多窗口之异常(AttributeError: &#39;list&#39; object has no attribute &#39;click&#39;)
  4. 运用python中装饰器方法来解决工作中为原有代码添加功能问题
  5. vue- cube-scroll踩坑记
  6. .net基础—委托和事件
  7. 1238. 循环码排列 (Medium)
  8. python生成随机中文姓名和拼音
  9. nuxt项目中使用store
  10. 使用CefSharp获取A标签中的内容