队列

本文深入探讨了队列数据结构的原理与应用,包括队列的基本操作如插入、移除和查看元素,以及如何判断队列是否为空或已满。通过Java代码实现,详细展示了队列的动态管理和数据存储方式,为理解和运用队列提供了实用指南。

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

队列

后进后出的结构,时序结构抽象

区别与栈只有栈顶元素,队列由队首,队尾元素控制操作

插入 insert
void insert(Elem e); // 从队首添加
移除 remove
Elem remove(); // 从队尾移除
查看 peek
Elem peek();
队满
boolean isFull(); // 
队空
boolean isEmpty();

Java代码实现

public class NewQueue<T> {

  private int maxSize; // 队列最大长度

  private T[] queueArray; // 数据存储数组

  private int front; // 队首

  private int rear; // 队尾

  private int nItems; // 当前容量

  public NewQueue(int maxSize) {
    queueArray = (T[]) new Object[maxSize];
    front = 0;
    rear = -1;
    nItems = 0;
  }

  public void insert(T t) {
    if (rear == maxSize - 1) {
      rear = -1;
    }
    queueArray[++rear] = t;
    nItems++;
  }

  public T remove() {
    T temp = queueArray[front++];
    if (front == maxSize) {
      front = 0;
    }
    nItems--;
    return temp;
  }

  /**
   * 获取队首元素
   */
  public T peekFront() {
    return queueArray[front];
  }

  /**
   * 获取队尾元素
   */
  public T peekRear() {
    return queueArray[rear];
  }

  /**
   * 队空
   * @return
   */
  public boolean isEmpty() {
    return (nItems == 0);
  }

  /**
   * 队满
   * @return
   */
  public boolean isFull() {
    return (nItems == maxSize);
  }

  /**
   * 返回队列实际使用长度
   * @return
   */
  public int size() {
    return nItems;
  }

}

源码:[https://github.com/MagicalFool/base-java]

转载于:https://www.cnblogs.com/MagicalFool/p/10153420.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值