数据结构与算法之编写病人看病系统模拟程序(队列)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43590389/article/details/102732954

这种方式是用对列编写病人看病模拟程序
对顺序队不熟悉的可以先学习下面链接的文章
这篇文章是链队的代码,虽然代码不同但逻辑思想是相同的

链队代码,点开即可

#include <iostream>
#include<stdio.h>
#include <malloc.h>
#define MaxSize 100
using namespace std;
typedef int ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;		
} SqQueue;




void InitQueue(SqQueue *&q)
{	q=(SqQueue *)malloc (sizeof(SqQueue));
	q->front=q->rear=0;
}






void DestroyQueue(SqQueue *&q)
{
	free(q);
}




bool QueueEmpty(SqQueue *q)
{
	return(q->front==q->rear);
}



bool enQueue(SqQueue *&q,ElemType e)
{	if ((q->rear+1)%MaxSize==q->front)	
		return false;
	q->rear=(q->rear+1)%MaxSize;
	q->data[q->rear]=e;
	return true;
}




bool deQueue(SqQueue *&q,ElemType &e)
{	if (q->front==q->rear)	
		return false;
	q->front=(q->front+1)%MaxSize;
	e=q->data[q->front];
	return true;
}






int main()
{
    SqQueue *q;
    InitQueue(q);
    ElemType n,a=2019101701,b=2019101702,c=2019101703,d=2019101704;
    enQueue(q,a);
    enQueue(q,b);
    enQueue(q,c);
    enQueue(q,d); 
    cout<<"请输入排队病人的病历号:"; 
    cin>>n;
    cout<<"把病人的病历号加入到队列中(入队)"<<endl; 
    enQueue(q,n);
    printf("病历号为%d的病人已经入队\n",n); 
    cout<<"病历号最前的排队病人现在就诊并将其删除(出队)。。。"<<endl; 
    deQueue(q,a);
    cout<<a<<endl;
    cout<<"从队首到队尾列出所有的排队病人病历号(依次出队)"<<endl; 
    deQueue(q,b);
    cout<<b<<endl;
    deQueue(q,c);
    cout<<c<<endl;
    deQueue(q,d);
    cout<<d<<endl;
    deQueue(q,n);
    cout<<n<<endl;
    cout<<"不再排队,余下依次就诊并列出所有的排队病人的病历号"<<endl;
    deQueue(q,b);
    cout<<b<<endl;
    deQueue(q,c);
    cout<<c<<endl;
    deQueue(q,d);
    cout<<d<<endl;
    deQueue(q,n);
    cout<<n<<endl;
    cout<<"下班了(释放队列)" <<endl;
	DestroyQueue(q); 
}

其中链队与顺序队的主要区别就是对数据的查找与插入和删除操作不同,主要原因是链式结构需要不能够随机存储。因此链式结构查找耗时较多,而顺序结构插入与删除复杂度较高,各有千秋。因此,在分体题目中,选择合适的数据结构最重要。

猜你喜欢

转载自blog.csdn.net/weixin_43590389/article/details/102732954