欢迎来到天天文库
浏览记录
ID:38791457
大小:15.08 KB
页数:4页
时间:2019-06-19
《循环队列基本操作-华为OJ》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/******************************************************************************Copyright(C),2001-2011,HuaweiTech.Co.,Ltd.******************************************************************************FileName:Version:Author:Created:2012/03/12LastModified:Description:F
2、unctionList:History:1.Date:2012/03/12Author:Modification:Createdfile******************************************************************************/#include#defineMAXSIZE50structstrqueue{intqueue[MAXSIZE];inthead;/*队头*/inttail;/*队尾*/intnum;/*队元素个数*/};boolini
3、tqueue(structstrqueue*s){if(!s)return0;for(inti=0;iqueue[i]=0;}s->head=-1;s->tail=-1;s->num=0;return1;}boolenqueue(structstrqueue*s,intx)/*进队列,返回0表示失败,返回1表示成功*/{if(!s)return0;if(s->num==MAXSIZE)return0;if(s->head==-1
4、
5、s->tail==-1){s->head=0;s->tail=0
6、;s->queue[s->tail]=x;/*赋值*/s->num=1;return1;}s->tail=(s->tail+1)%MAXSIZE;s->queue[s->tail]=x;s->num++;return1;}booldequeue(structstrqueue*s,int*x)/*出队列,返回0表示失败,返回1表示成功*/{if(!s
7、
8、!x)return0;if(s->num==0)return0;*x=s->queue[s->head];/*赋值*/s->queue[s->head]=0;s->head=(s-
9、>head+1)%MAXSIZE;/*从对头出队列*/s->num--;if(s->num==0){s->head=-1;s->tail=-1;}return1;}intgethead(structstrqueue*s)/*获得队列头数值*/{if(!s)return-1;if(s->num==0)return-1;inthead=0;head=s->queue[s->head];returnhead;}intgettail(structstrqueue*s)/*获得队列尾数值*/{if(!s)return0;inttail=0
10、;if(s->num==0)return-1;tail=s->queue[s->tail];returntail;}intgetqueuelenth(structstrqueue*s)/*获得队列长度*/{if(!s)return0;intlenth=0;lenth=s->num;returnlenth;}boolsearch(structstrqueue*s,intx)/*在队列中查找x是否存在,如果存在返回1,否则返回0*/{if(!s)return0;intheadTemp=s->head;inttailTemp=s->t
11、ail;if(s->num==MAXSIZE){for(inti=0;iqueue[i])return1;}}else{while(headTemp!=tailTemp){if(x==s->queue[headTemp])return1;headTemp=(headTemp+1)%MAXSIZE;}}return0;}intmain(){structstrqueuequeue={NULL,0,0,0};initqueue(&queue);for(inti=1;i<=MAXSIZE;i
12、++){enqueue(&queue,i);}return0;}
此文档下载收益归作者所有