Java数据结构-003队列-数组模拟环形队列

1.数组模拟环形队列

       数组模拟环形队列是对数组模拟队列的一种改进,因为数组模拟队列只能使用一次,没有达到复用的效果,所以在原有的基础上对其进行改进.
       通过取模的方式来实现即可

要点:要做到循环,必须有一个空的位置,即数组为maxSize,队列有maxSize-1个位置
           rear指向队列的最后一个元素的后一个位置

2.思路分析:

思路:
1.maxSize 表明数组的最大容量

2.front=0 front 就指向队列的第一个元素, 也就是说 arr[front] 就是队列的第一个元素 ,

3.rear=0 rear 指向队列的最后一个元素的后一个位置. 因为希望空出一个空间做为约定

4.我们要先进性队列满的判断
该判断方法为:return (rear+1)%maxSize==front;

5.判断队列为空return rear==front;

6.添加数据到队列addQueue(int n)
先判断队列是否满
然后直接将数据加入arr[rear] = n;//这里把数组中的数添加后,我们要对rear进行后移
rear = (rear+1)%maxSize;

7.获取队列的数据getQueue()
先判断队列是否为空
//1.先把front对应的值保存到一个临时的变量
//2.将front后移,考虑取模
//3.将临时保存的变量返回
【我们不能直接return数组中的数,会结束方法,所以要先用一个临时变量保存该数子,当front后移之后,再输出数字】
int value = arr[front];
front = (front + 1)%maxSize;【这里就是front的后移】
return value;

8.最后进行遍历

// 遍历  
if (isEmpty()) {   
	System.out.println("队列为空,没有数据");   
	return;  
}  
//从front开始遍历,遍历多少个元素    
for (int i = front; i < front+size(); i++) {   
	System.out.printf("arr[%d]=%d\n", i%maxSize, arr[i]);  
	} 
}

在这里插入图片描述


public class CricleArrayQueueDemo2 {
 public static void main(String[] args) {
  //创建一个环形队列
  CricleArrayQueue arrayQueue = new CricleArrayQueue(4);//有一个空的空间,这里设置的为4,其队列最多为3个
  char key = ' ';//接收用户输入
  Scanner scan = new Scanner(System.in);
  boolean loop = true;
  //输出一个菜单
  while(loop) {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值