本文主要是介绍西农数据结构作业_患者到医院看病事件模拟(队列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
患者到医院看病的顺序是:先排队等候,再看病治疗。要求设计一个算法,模拟病人等候就诊的过程。
其中:“病人到达"用命令“A”(或“a”)表示,“护士让下一位就诊”用“N”(或“n”)表示,“不再接收病人排队”用“S”(或“s”)表示。
#include <iostream>
#include <string.h>
#include <assert.h>
using namespace std;
class Queue {
public:Queue(int n);bool EnQueue(string x);bool DeQueue(string& x);bool IsEmpty();bool IsFull();string getTop();void Print();
private:string* elements;int front, rear;int maxsize;
};
int main() {Queue q(1000);char temp;while (cin >> temp) {if (temp == 'a' || temp == 'A') {string n;cin >> n;q.EnQueue(n);}else if (temp == 'n' || temp == 'N') {string n;n=q.getTop();if (n == "no")cout << "无病人就诊" << endl;elsecout << "病历号为" << n << "的病人就诊" << endl;q.DeQueue(n);}else if (temp == 's' || temp == 'S') {cout << "今天不再接收病人排队,下列排队的病人依次就诊:" ;q.Print();}else {cout << "输入命令不合法!" << endl;}}}Queue::Queue(int n)
{maxsize = n;elements = new string[maxsize];front = rear = 0;
}bool Queue::EnQueue(string x)
{if(IsFull())return false;elements[rear] = x;rear++;return true;
}bool Queue::DeQueue(string& x)
{if (IsEmpty()) {return false;}x = elements[front];front++;return true;
}bool Queue::IsEmpty()
{return rear == front? true : false;
}bool Queue::IsFull()
{return rear==maxsize-1?true:false;
}string Queue::getTop()
{if (rear == front)return "no";else return elements[front];
}void Queue::Print()
{for (int i = front-1; i <= rear-1; i++) {cout << elements[i] << " ";}cout << elements[rear] ;
}
这篇关于西农数据结构作业_患者到医院看病事件模拟(队列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!