《2022年队列应用_约瑟夫环问题 .pdf》由会员分享,可在线阅读,更多相关《2022年队列应用_约瑟夫环问题 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、链式队列LinkQueue.h #include #include usingnamespace std; typedefstruct node DataType data; struct node *next; Qnode; typedefstruct Qnode *front ; /* 队头指针 */ Qnode *rear ; /* 队尾指针 */ LQueue; / 初始化处理void QueueInitiate(LQueue *Q) Q-front=NULL; Q-rear=NULL; / 非空判断,为空,为非空。int QueueNotEmpty(LQueue Q) if (Q.f
2、ront=NULL) return 0; else return 1; / 入队列,即插入操作int QueueAppend(LQueue *Q,DataType x) Qnode *p; p=(Qnode *)malloc(sizeof (Qnode); if (!p) coutdata=x; p-next=NULL; / 若rear 指向空即空队列,直接将 rear 指向p即可。否则将 rear 的next 指向p。if (Q-rear!=NULL) Q-rear-next=p; Q-rear=p; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
3、- - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - if (Q-front=NULL)Q-front=p; return 1; / 出队列,即删除操作int QueueDelete(LQueue *Q,DataType *x) Qnode *p; if (Q-front=NULL) coutfront-data; p=Q-front; Q-front=Q-front-next; if (Q-front=NULL)Q-rear=NULL; free(p); return 1; int QueueGet(LQueue Q,D
4、ataType *x) if (Q.front=NULL) coutdata; return 1; void DestoryQueu(LQueue Q) Qnode *p,*q; p=Q.front; while (p!=NULL) q=p; p=p-next; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - free(q); /* 1. 从队列头开始报数,报到1至m-1的人先从队首出队,再从队尾进队2. 报数报到 m 的人出队
5、,不进队。并从下一个人开始接着从1开始报数。3.继续上述过程,指导队列为空为止。*/ #include #include typedefint DataType; #includeLinkQueue.h void main() int s,m,i,x; LQueue Q; couts; coutm; QueueInitiate(&Q); for (i=1;i=s;i+) QueueAppend(&Q,i); cout现在开始报数出列: ; while (QueueNotEmpty(Q) for (i=1;im;i+) QueueDelete(&Q,&x); QueueAppend(&Q,x); QueueDelete(&Q,&x); coutx ; coutn 出列完毕! ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -