PTA 7-1 银行业务队列简单模拟

  用链表实现队列操作,代码如下:

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <malloc.h>
  5
  6 using namespace std;
  7
  8 //函数状态码定义
  9 #define TRUE        1
 10 #define FALSE       0
 11 #define OK          1
 12 #define ERROR       0
 13 #define INFEASIBLE -1
 14 #define OVERFLOW   -2
 15
 16 typedef int Status;
 17 typedef int QElemType;
 18
 19 typedef struct QNode {
 20     QElemType data;
 21     struct QNode *next;
 22 }QNode, *QueuePtr;
 23
 24 typedef struct {
 25     QueuePtr front;
 26     QueuePtr rear;
 27 }LinkQueue;
 28
 29 Status InitQueue(LinkQueue &Q) {
 30     Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
 31     if (!Q.front) exit(OVERFLOW);
 32     Q.front->next = NULL;
 33     return OK;
 34 }
 35
 36 Status DestroyQueue(LinkQueue &Q) {
 37     while (Q.front) {
 38         cout << Q.front->data << endl;
 39         Q.rear = Q.front->next;
 40         free(Q.front);
 41         Q.front = Q.rear;
 42     }
 43     return OK;
 44 }
 45
 46 Status EnQueue(LinkQueue &Q, QElemType e) {
 47     Q.rear->next = (QueuePtr)malloc(sizeof(QNode));
 48     if (!Q.rear->next) exit(OVERFLOW);
 49     Q.rear->data = e;
 50     Q.rear = Q.rear->next;
 51     Q.rear->next = NULL;
 52     return OK;
 53 }
 54
 55 Status DeQueue(LinkQueue &Q, QElemType &e) {
 56     if (Q.front == Q.rear)
 57         return ERROR;
 58     e = Q.front->data;
 59     QueuePtr p = Q.front;
 60     Q.front = Q.front->next;
 61     free(p);
 62     return OK;
 63 }
 64
 65 bool EmptyQueue(LinkQueue &Q) {
 66     return Q.front == Q.rear;
 67 }
 68
 69 int main()
 70 {
 71     LinkQueue A, B;
 72     InitQueue(A);
 73     InitQueue(B);
 74     int n, m;
 75     cin >> n;
 76     for (int i = 0; i < n; ++i) {
 77         cin >> m;
 78         if (m & 1)
 79             EnQueue(A, m);
 80         else
 81             EnQueue(B, m);
 82     }
 83     bool ok = false;
 84     while (!EmptyQueue(A) && !EmptyQueue(B)) {
 85         DeQueue(A, m);
 86         if (ok)
 87             cout << ‘ ‘ << m;
 88         else
 89             cout << m;
 90
 91         if (!EmptyQueue(A)) {
 92             DeQueue(A, m);
 93                 cout << ‘ ‘ << m;
 94         }
 95         DeQueue(B, m);
 96         cout << ‘ ‘ << m;
 97         ok = true;
 98     }
 99     while (!EmptyQueue(A)) {
100         DeQueue(A, m);
101         if (ok)
102             cout << ‘ ‘ << m;
103         else
104             cout << m;
105         ok = true;
106     }
107     while (!EmptyQueue(B)) {
108         DeQueue(B, m);
109         if (ok)
110             cout << ‘ ‘ << m;
111         else
112             cout << m;
113         ok = true;
114     }
115     return 0;
116 }

原文地址:https://www.cnblogs.com/fan-jiaming/p/9743912.html

时间: 2024-11-10 15:56:21

PTA 7-1 银行业务队列简单模拟的相关文章

7-18 银行业务队列简单模拟

7-18 银行业务队列简单模拟(25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字

7-1 银行业务队列简单模拟 (25 分)

题目: 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处

5-2 银行业务队列简单模拟

设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤\le≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处

7-18 银行业务队列简单模拟(25 分)

设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处理完成的

银行业务队列简单模拟(队列queue)

设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列.假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出. 输入格式: 输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号.编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口.数字间以空格分隔. 输出格式: 按业务处理完成的

银行业务队列简单模拟

#include <iostream> #include<cstdlib> #include<stack> #include <queue> #include <deque> #include<iostream> #include<vector> #include<algorithm> #include<list> #include<string> using namespace std

Java简单模拟Android中Handler-Message机制

在Android中主线程与子线程的通信十分重要,Google工程师为我们提供了Handler-Message机制来解决他们之间的交互问题.今天,我们就来简单理解Handler-Message机制的原理,在Java中简单模拟该机制.代码示例Github地址HandlerDemo 首先,看一下简单流程图(不太专业) 由上图可知,流程中主要相关类有Handler.Message.MessageQueue.Looper:下面,我们就围绕它们来简单分析该流程图: 1.我们一般在主线程创建Handler,接

利用redis List队列简单实现秒杀 PHP代码实现

利用redis List队列简单实现秒杀 PHP代码实现 2018年05月28日 11:37:46 m_nanle_xiaobudiu 阅读数 35674更多 分类专栏: Redis 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80479666 一 生产者producer部分 ---------------------

HDU-1034-Candy Sharing Game(C++ &amp;&amp; 简单模拟)

Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3703    Accepted Submission(s): 2311 Problem Description A number of students sit in a circle facing their teacher in the cent