学习
实践
活动
专区
工具
TVP
写文章
  • 广告
    关闭

    新年·上云精选

    热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据结构与算法 队列_数据结构中的排序算法

    如图所示: 队列的最大长度为MaxSize,最大下标为MaxSize-1 入队时队头下标不变而队尾下标改变,出队时则相反 二、模拟队列 1.简单的使用数组模拟队列: /** * @Author:huang = size; this.arr = new Object[maxSize]; this.front = -1; this.rear = -1; 如果要解决这个问题,可以这样改进: 当入队的时候进行一次判断,如果尾指针已经移动到maxSize-1的位置,并且头指针不在-1位置,也就是队列仍然还有空位,就触发一次数据迁移。 ,故也需要进行取余操作,所以正确的公式是 (rear+1)%maxSize = front%maxSize 3.代码实现 /** * @Author:huang * @Date:2020-06 ) { //由于需要在尾指针后空一位作为队满队空的区分,所以实际大小是maxSize+1 this.maxSize = maxSize + 1; this.arr

    8420

    队列

    因此永远保留出一个位置,让rear和front隔开,当rear + 1 = front 时,我们让它队列已满,这也是为了避开跟front相同,% maxSize 只是为了让它等于maxSIze时算出结果为 当队列满时,条件是 (rear + 1) % maxSize = front 当队列添加数据时,real必须是 rear = (rear + 1) % maxSize 当队列为空的条件,rear == front 队列中有效的数据的个数 (rear - front + maxSize) % maxSize 我举个例子,假设我们这个数组 maxSize=3 如果按原来的思路,当rear=maxSize 于是就变成了(rear - front + maxSize) % maxSize,很遗憾的告诉你,这里的无论+还是%,都缺一不可。相辅相成,大概这就是数学的魅力所在。 - front + maxSize) % maxSize; } // 显示队列的头数据, 注意不是取出数据 public int headQueue() {

    20420

    扫码关注腾讯云开发者

    领取腾讯云代金券