实验四 队列及其应用.docx

上传人:太** 文档编号:38945267 上传时间:2022-09-06 格式:DOCX 页数:3 大小:12.21KB
返回 下载 相关 举报
实验四 队列及其应用.docx_第1页
第1页 / 共3页
实验四 队列及其应用.docx_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《实验四 队列及其应用.docx》由会员分享,可在线阅读,更多相关《实验四 队列及其应用.docx(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验四队列及其应用#includestdio.h#includestdlib.h#define 日emType inttypedef struct qnode 定义记录类型 (int data;节点数据域为datastruct qnode *next; QNode;typedef struct(QNode *front,*rear;QuType;在队列qu中查找一个节点,其数据域的值为Num,找到返回L否那么返回-1 int QuSearch(QuType *qu,int Num)(QNode *p=qu-front;循环查找节点p, p的数据域的值为Numwhile( p & p-data

2、!= Num ) p=p-next;找到数据域值为Num的节点,返回1if( p )/ if(p-data = = no) ? ?return 1; elsereturn -1;打印队列中所有的元素void QuDisplay(QuType *qu) (QNode *p=qu-front;int i=l;if(p 二二 NULL) (prin 甘(”* 没有排队者 *rT);)while(p != NULL) (print.第%d 个排队者为:%5drT,i+,p-data);p=p-next;入队操作,在队列qu中插入节点,该节点的数据域的值为Num int EnQueue(QuType *

3、qu,int Num)(QNode *q=(QNode *)malloc(sizeof(QNode);if(q = = NULL)return -1;节点q为即将插入的新节点,为其数据域赋值为Num,指针域赋值为NULL q-data = Num;q-next = NULL;if( qu-rear = NULL ) /插入前队列中没有节点,如何插入新节点 (qu-front = q;qu-rear = q;)else /插入前队列中有假设干节点,如何插入新节点(qu-rear-next = q;qu-rear = q;) return 1;出队操作,删除队列中的队头节点,并用Num保存删除节点

4、的数据int OutQueue(QuType *qu,int *Num)(QNode *p=qu-front;判断队列是否为空,假设队列为空,那么返回if( p = NULL)return -1;else 假设队列非空,那么删除队头节点 使用Num获取队头节点数据域的值*Num = p-data;队列中只有一个节点P,删除方法?if( p - qu -rear)qu-front = qu-rear = NULL;队列中有多于1个节点的时候,删除队头节点p的方法? elsequ-front = p-next;free(p);return 1;)判空队列,假设为空返回L否那么返回-1 int Qu

5、eueEmp(QuType *qu)(队列为空的条件?if( qu-front = NULL ) return 1;elsereturn -1;void main(void)(int sel,no,temp,flag = l;QuType *qu;qu=(QuType *)malloc(sizeof(QuType);qu-front=qu-rear=NULL;while(l 二二 flag)(printf(nl:排队2 :就诊3 :查看队列4 :不再排队,余下就诊5 :下班 请选择”);scanf(%d,&sel);switch(sel) (case 1: printf(输入病历号:);sca

6、nf(%d,&no);whileQ二二QuSearch(qu,no) 输入后需要判断是否重复 (printf(”输入病历号重复,请重新输入); scanf(%d,&no);EnQueue(qu,no);break;case 2: if( OutQueue(qu,&temp) = -1)printf(”* 没有排队的病人*rT);elseprintf(”病历号为%d的请就诊n,temp);break;QuDisplay(qu);break;if(QueueEmp(qu)=l)printf(* 没有排队的病人*rT);else(printf(”病人按如下顺序就诊n);QuDisplay(qu);flag = 0;break;printf(已下班,请排队的病人明天就医! n);flag=0;break;default:break;)getchar();)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁