第7周实践项目2.2 求解报数问题
来源:互联网 发布:嗨氏黑历史知乎 编辑:程序博客网 时间:2024/05/19 17:03
/*(1).问题描述: n个人从左向右编号1~n,然后从左向右报数“1,2,1,2,1,2...” 数到1的人出队,数到2的人立即站到队列的最右端 继续报数,直到所有人出列(2) 数据组织:用一个队列解决出列问题,由于这里不需要已经出队后的元素,所以采用环形队列?????(3)设计算法: 1.全部入队 2.出队一个,输出编号 3.若队列不为空,再出队一个元素,并将刚出列的元素进队到队尾 */#include <stdio.h>#include <malloc.h>#define maxsize 10//不能开辟8个因为在用环形队列时maxsize=0时被舍弃了typedef struct{ int date[maxsize]; int front,rear;}sqqueue;void initqueue(sqqueue *&q){ q=(sqqueue *)malloc(sizeof(sqqueue)); q->front=q->rear=0;}bool enqueue(sqqueue *&q,int e){ if((q->rear+1)%maxsize==q->front) return false; q->rear=(q->rear+1)%maxsize; q->date[q->rear]=e; return true;}bool dequeue(sqqueue *&q,int &e){ if(q->front==q->rear) return false; q->front=(q->front+1)%maxsize; e=q->date[q->front]; return true;}bool queueempty(sqqueue *q){ return (q->front==q->rear);}void destoryqueue(sqqueue *q){ free(q);}void number(int n){ int e; sqqueue *q; initqueue(q); for(int i=1;i<=n;++i) enqueue(q,i); printf("报数出列顺序:"); while(q->front!=q->rear)//z这行后面开始多加了一个逗号,造成死循环。下面的程序是没有错误的 { dequeue(q,e); printf("%d",e); if(!queueempty(q)) { dequeue(q,e); enqueue(q,e); } } /* int m=8; while(m--) { dequeue(q,e); printf(" %d",e); dequeue(q,e); enqueue(q,e); }*/ printf("\n"); destoryqueue(q);}int main(){ int n=8; printf("初始序列:\n"); for(int i=1;i<=n;++i) printf(" %d",i); printf("\n"); number(n); return 0;}#include <stdio.h>#include <malloc.h>#define Maxsize 8typedef struct{ int date[Maxsize]; int front,rear;}SqQueue;void num(int n){int i,e;SqQueue q;q.front=q.rear=0;for(i=1;i<=n;i++){q.rear=(q.rear+1)%Maxsize;q.date[q.rear]=i;}printf("报数出列顺序");while(q.front!=q.rear){q.front=(q.front+1)%Maxsize;e=q.date[q.front];printf("%d",e);if(q.front!=q.rear){q.front=(q.front+1)%Maxsize; e=q.date[q.front];q.rear=(q.rear+1)%Maxsize; q.date[q.rear]=e;}}printf("\n");}int main(){int i,n=8;printf("初始序列");for(i=1;i<=n;i++){printf("%d",i);}printf("\n");num(n);return 0;}
阅读全文
0 0
- 第7周实践项目2.2 求解报数问题
- 第12周上机实践项目4 - 利用遍历思想求解图问题(5-7)
- 第12周上机实践项目4 - 利用遍历思想求解图问题(1-4)
- 第四周《C语言及程序设计》实践项目39 问题求解——求素数
- 第四周《C语言及程序设计》实践项目40 问题求解方法——穷举
- 队列应用1:求解报数问题
- 【第12周 项目4 - 利用遍历思想求解图问题(6-7)】
- 第12周项目4利用遍历思想求解图问题(6-7)
- 第12周 项目4 - 利用遍历思想求解图问题 (6-7)
- 第12周项目4-利用遍历思想求解图问题(6-7)
- 第12周项目4-利用遍历思想求解图问题(6-7)
- 第12周项目4 - 利用遍历思想求解图问题(7)
- 第12周上机实践项目3——用递归方法求解(输出二进制)
- 第12周上机实践项目3——用递归方法求解(汉诺塔)
- 第11周上机实践项目2 - 用二叉树求解代数表达式
- 第十二周上机实践—项目4—利用遍历思想求解图问题
- 第二周《C语言及程序设计》实践项目35 问题求解方法——迭代
- 第五周实践项目8 8皇后问题的回溯求解_栈结构
- Java数据结构与算法
- Java构造方法
- hamming distance(汉明距离)
- Java:二叉树的递归遍历
- ACM ICPC 2017 Warmup Contest 4(ACM Northeastern European Regional Contest,Northern Subregion 2015)
- 第7周实践项目2.2 求解报数问题
- 安全性、可靠性及性能评价总结
- 【超分辨率】FSRCNN--Accelerating the Super-Resolution Convolutional Neural Network
- Miller-Rabin
- Portlet 通信(二) Portlet URL
- Python Re正则表达式
- java-web开发学习路线参考
- JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
- python 定义类时,内部方法的互相调用