西农数据结构作业_患者到医院看病事件模拟(队列)

患者到医院看病的顺序是:先排队等候,再看病治疗。要求设计一个算法,模拟病人等候就诊的过程。

其中:“病人到达"用命令“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;
			else
				cout << "病历号为" << 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] ;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值