队列应用1:求解报数问题
来源:互联网 发布:松下洗衣机 三洋 知乎 编辑:程序博客网 时间:2024/05/07 02:24
(1).问题描述:
n个人从左向右编号1~n,然后从左向右报数“1,2,1,2,1,2...”
数到1的人出队,数到2的人立即站到队列的最右端
继续报数,直到所有人出列
(2).数据组织:使用顺序队列
(3)设计算法:
1.全部入队
2.出队一个,输出编号
3.若队列不为空,再出队一个元素,并将刚出列的元素进队到队尾
package NumberOff;//队列类,先进先出class Queue{final int MaxSize = 10;int p[];// peopleint front;int rear;public Queue(){p = new int[MaxSize];front = 0;rear = 0;}// 进队列public void enQueue(int i){if ((rear + 1) % MaxSize == front){System.out.println("Queue full");return;}rear = (rear + 1) % MaxSize;p[rear] = i;}// 出队列public int deQueue(){if (rear == front){System.out.println("Queue empty");return -1;}front = (front + 1) % MaxSize;return p[front];}// 判断队列是否为空public boolean QueueEmpty(){if (rear == front)return true;elsereturn false;}}public class Main{public static void main(String args[]){Queue q = new Queue();//全员进队列System.out.println("进队顺序为:1 2 3 4 5 6 7 8");for (int i = 1; i < 9; i++){q.enQueue(i);}int temp;System.out.print("出队顺序为:");while (!q.QueueEmpty()){System.out.print(q.deQueue() + " ");//出队一个,输出编号if (!q.QueueEmpty()) //出队第二个,并将这个进队到队尾{temp = q.deQueue();q.enQueue(temp);}}}}
输出:
进队顺序为:1 2 3 4 5 6 7 8
出队顺序为:1 3 5 7 2 6 4 8
0 0
- 队列应用1:求解报数问题
- 【C】队列报数问题
- 第六周--数据结构--队列的应用之报数问题
- 用队列解决报数问题
- 队列应用2:求解迷宫问题,最短路径
- 队列的应用——求解迷宫问题
- 第7周实践项目2.2 求解报数问题
- poj 3750 报数问题,很经典,用队列很方便
- poj 3750 小孩报数问题(队列Queue)
- 数据结构复习——队列解决报数问题
- 报数问题
- 报数问题
- 报数问题
- 报数问题
- 报数问题
- 报数问题
- 报数问题
- 1栈和队列--用栈来求解汉诺塔问题
- SQL分页
- 7.c/c++程序员面试宝典-循环语句
- 单词分解
- iOS Autolayout之Masonry解读
- iOS9.0 升级后的常见问题
- 队列应用1:求解报数问题
- HashMap和ConcurrentHashMap比较
- LIBCURL发送邮件
- 博客索引
- flashtool线刷工具
- C#泛型List的用法
- 使用JTDS连接sqlserver数据库
- Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据
- 高效程序员的 7 个共同特征