利用队列实现车厢编组问题。假设队列元素是char类型,‘H’表示硬座,‘S’表示软卧,队列A表示一组硬座和卧铺混编的车厢。要求把队列A中的硬座车厢移动到队列B,队列A中的卧铺车厢移动到队列C,同时保留原有硬座车厢之间和软卧车厢之间的先后顺序不变。如HSHHSHSSHH,分别输出软卧车组:SSSS和硬座车组:HHHHHH。

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define TRUE 1
#define FALSE 0
//typedef 为重定义,将一个char类型数据重新定义为ElemType,在以后的程序中出现的ElemType 就可以理解为char类型。
typedef char ElemType;
typedef int Status;
//----- 队列的顺序存储表示 -----
#define MAXQSIZE 30 // 存储空间的初始分配量typedef struct {ElemType *base; //存储空间的基址int front;      //队头位标int rear;       //队尾位标, 指示队尾元素的下一位置int maxSize;    //存储容量
} SqQueue;          //别名// 构造一个空队列 Q
Status InitQueue(SqQueue &Q) {//Q->rear指向头结点Q.base = (ElemType*)malloc(MAXQSIZE * sizeof(ElemType));if(!Q.base) exit(OVERFLOW);Q.front = Q.rear = 0;Q.maxSize = MAXQSIZE;return OK;
}//判队列是否为空
Status QueueEmpty (SqQueue Q) {if(Q.rear == Q.front) return TRUE;else return FALSE ;
}//入队函数
Status EnQueue(SqQueue &Q, ElemType e) {//请在此填写代码,将该算法补充完整,参见书本和课件相关章节if((Q.rear+1) % MAXQSIZE == Q.front)//队列已满return ERROR;Q.base[Q.rear] = e;//插入队尾Q.rear = (Q.rear +1) % MAXQSIZE;//尾部指针后移,如果到最后则转到头部return OK;
}//出队函数
Status DeQueue(SqQueue &Q, ElemType &e) {//请在此填写代码,将该算法补充完整,参见书本和课件相关章节if(Q.front == Q.rear)   //队列空return ERROR;//返回队头元素e = Q.base[Q.front];    //队头指针后移,如到最后转到头部Q.front = (Q.front + 1) % MAXQSIZE; return OK;
}//输出循环队列函数
void OutQueue(SqQueue Q) {  ElemType e;if(QueueEmpty(Q)){printf("这是一个空队列!");} else {while(QueueEmpty(Q) == FALSE){DeQueue(Q,e);printf("%6c", e);}printf("\n");}
}void Arrange(SqQueue A, SqQueue &B, SqQueue &C) {ElemType e;//请在此填写代码,将该算法补充完整,参见书本或课件相关章节InitQueue(B);InitQueue(C);while (FALSE == QueueEmpty(A)) {DeQueue(A, e);if(e == 'H') EnQueue(B, e);else EnQueue(C, e);}}//主函数
int main() {SqQueue A, B, C;ElemType e;InitQueue(A);printf("请输入软卧S和硬座H的一个组合车组:");for(scanf("%c", &e); e != '\n';) {EnQueue(A, e);scanf("%c", &e);}OutQueue(A);Arrange(A, B, C);printf("硬座车组:");OutQueue(B);printf("软卧车组:");OutQueue(C); return 0;
}

利用队列实现车厢编组相关推荐

  1. 利用“队列”解决“窗口混乱”问题

    本图文利用队列这种数据结构以及多线程技术模拟了银行排队(叫号)软件的工作流程.

  2. python递归合并排序_python 归并排序的递归法与迭代法(利用队列)实现,以及性能测试...

    递归排序核心 递归排序的核心是 分与合 分的最终结果 就是将原数组中每一个数字分作一个数组, 合就是 所有小数组不断排序,合并的过程. 合并的过程是先将两个含有一个数字的数组排序,合并(每次比较两个数 ...

  3. 笔试题之——栈问题(列车车厢编组问题)

    滴!又是一个笔试题总结! 1.题目说明: 铁路货车编组站如图显示,A点有K节车厢,所有车厢都须从A点进入,经C点道岔后,重新编组到B点. 如:A点有车厢1-2-3(左-右),经C编组,到B点后,可以被 ...

  4. 二叉树基本操作:利用队列实现层序遍历

    利用队列实现层序遍历 关于二叉树其他的基本操作可以看我前几篇文章: 二叉树的基本操作:二叉树的后序遍历非递归算法 二叉树的遍历:前序非递归和中序非递归 二叉树基本操作:二叉树的创建与递归遍历 基础知识 ...

  5. 用js写出数据结构中的自定义队列,利用队列思想写出一个击鼓传花的游戏函数,优先级队列

    队列的核心是先进先出 1.用js写出数据结构中的自定义队列 class Queue{constructor(){this.item = [];}// 1.入队enqueue(ele){this.ite ...

  6. 利用队列的基本操作,完成舞伴问题

    题目 利用队列的基本操作,完成舞伴问题 舞伴问题的描述:假设在周末舞会上,男士们和女士们进入舞厅时各自排成一队,跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴,若两队初始人数不相同,则较长的那一 ...

  7. java利用队列实现一个学生排队买票功能

    1.利用队列实现一个学生排队买票功能 1.定义一个学生类Student,包括学号No.姓名Name.性别Gender.年龄Age等信息 2.定义一个队列类Queue,用于将学生进行队列排序 3.可以从 ...

  8. 【C语言】利用队列的思维理解移位运算符和移位函数

    在c语言中,尤其是单片机的C51中,移位运算操作很常见.实现移位操作的方法有两种:一是利用移位运算符,二是利用移位函数. 目录 一.移位运算符 1.左移 2.右移 二.循环移位函数 三.移位运算符和循 ...

  9. java队列火车厢重排_火车车厢重排(链队列)

    1.题目: Problem Description 一列货运列车共有n节车厢,每节车厢将停放在不同的车站.假定n个车站的编号分别为1~n,即货运列车按照第n站至第1站的次序经过这些车站.为了便于从列车 ...

最新文章

  1. 数据结构相关C语言代码
  2. unix、linux 命令
  3. spring----IOC知识点
  4. jdk,Eclipse,SWTDesigner安装【原创】
  5. linux使用什么ide编译安卓,抛弃IDE,使用gradle命令与vim构建安卓应用
  6. mysql用shell建100多字段表并导入
  7. 升级win10遇到的一些问题
  8. UE4之Import源码解析
  9. 19.SimLogin_case01
  10. Oligo 7 引物设计 安装
  11. 初学者如何选择网络仿真软件
  12. java集成信鸽推送
  13. TCP/IP之传输层协议详解
  14. 金蝶K3wise 演示版 W10安装
  15. FireFox插件开发--弃用NPAPI
  16. 奔驰c260语言设置方法图解,奔驰C260L灯光使用方法,C260L灯光开关图解说明
  17. 《如何阅读一本书》——读书方法的整理
  18. 图片360度无死角自由旋转
  19. wireshark的usb抓包分析 2 - 分析数据
  20. js关闭谷歌浏览器的当前页面

热门文章

  1. USC提出拟牛顿法深度学习优化器Apollo,效果比肩SGD和Adam
  2. 岗位内推 | 字节跳动招聘NLP、计算机视觉、推荐算法实习生
  3. 实习推荐 | 腾讯AI Lab虚拟人中心招聘算法工程师实习生
  4. 想转行人工智能?机会来了!
  5. 浙江大学人工智能研究所:AI+X驱动科学发现
  6. linux增加php进程数,linux - 调整php-fpm进程数之后,为什么负载飙升的厉害
  7. 启动maven项目在eclipse中报错 Can‘t find class [×××] for bean with name '××' defined in class path resource
  8. 《操作系统》实验报告——进程管理
  9. N Problems During K Days
  10. Increasing Subsequence (easy version)