数组实现环形链表

探讨如何在数组中实现环形链表,解决初始化队列时存储位置不足的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 没想通怎么满额复用初始化队列空间,因为实际有效的存储位会少一个

package com.kali.structure;

/**
 * 前提:这是一个环形队列,目的为了复用空间
 *      通过取模算法用数组来实现队列并可复用
 *      1.队列为空的条件判断
 *          front == rear
 *      2.队列满的条件判断
 *          (rear+1) % maxSize == front
 *      3.添加元素
 *          rear = (rear+1) % maxSize
 *      4.获取元素
 *          front = (front+1) % maxSize
 *      ********* 3、4步取模原因是为了让指针周期性复用
 *      5.遍历元素
 *          front + offset()
 *          解析:maxSize - front得到之后元素,加上rear中间的叠加区直接取maxSize模可得
 *          offset = (maxSize - front + rear) % maxSize
 *      6.获取头元素
 *          return queue[front]
 *      在算法的设计过程中将一个位置空出来作为约定,所以实际的有效元素会少一个
 *      这个所谓的约定就是一个预留空间,始终在rear的后一个位置
 */
public class RingQueue {
    private int front;
    private int rear;
    private int maxSize;
    private int[] queue;

    public RingQueue(int init){
        this.maxSize = init;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值