LXTTY 发表于 2022-5-9 19:28:50

数据结构栈和队列问题

假设以数组se存放循环队列的元素,同时设置变量front和rear分别作为队头指针和队尾指针,且队头指针指向队头前一个位置,写出判定此循环队列为满的条件,并给出循环队列的入队和出队的算法

Twilight6 发表于 2022-5-9 19:57:19


循环队列的队满条件为 (rear+1) % m = front

java 代码参考:

public class ArrayQueue {
    private int maxSize; // 数组最大容量
    private int front; // 队头指针,指向队头元素的前一个位置
    private int rear; // 队尾指针,指向队列尾的最后一个位置
    private int[] arr; // 用数组存放数据,模拟队列

    public ArrayQueue(int arrMaxSize) {
      maxSize = arrMaxSize;
      arr = new int;
      front = rear = 0;
    }

    public boolean isFull() {
      return (rear + 1) % maxSize == front;
    }

    public boolean isEmpty() {
      return rear == front;
    }

    public void addQueue(int n) {
      if (isFull()) {
            throw new RuntimeException("队列已满,不能加入数据");
      }
      arr = n;
      rear = (rear + 1) % maxSize;
    }

    public int getQueue() {
      if (isEmpty()) {
            throw new RuntimeException("队列空,无法取出数据");
      }
      front = (front + 1) % maxSize;
      return arr;
    }

    public void show() {
      if (isEmpty()) {
            System.out.println("当前队列为空!");
            return;
      }
      System.out.print("Queue = [");
      int temp = front;
      for (int i = 0; i < (rear + maxSize - front) % maxSize; i++) {
            if (i == (rear + maxSize - front) % maxSize - 1){
                System.out.print(arr);
            } else {
                System.out.print(arr + ", ");
            }
            temp = (temp + 1) % maxSize;
      }
      System.out.println(']');
    }

    public int headQueue() {
      if (isEmpty()) {
            throw new RuntimeException("队列为空!");
      }
      return arr;
    }
}

LXTTY 发表于 2022-5-9 20:02:06

Twilight6 发表于 2022-5-9 19:57
循环队列的队满条件为 (rear+1) % m = front

java 代码参考:

牛啊,你们这都是咋学的呀,有没有啥学习方法推荐推荐{:5_100:}

Twilight6 发表于 2022-5-9 20:08:40

LXTTY 发表于 2022-5-9 20:02
牛啊,你们这都是咋学的呀,有没有啥学习方法推荐推荐


B站的 王卓老师数据结构与算法视频强烈推荐,虽然是基于 C/C++ 的

但是数据结构与算法本身就是学习算法实现的思想(我就没有 C/C++ 的基础,QAQ)

而且王卓老师不得不说,老师讲课很温柔,而且解释的蛮容易理解的,是我看过感觉最好的一个数据结构课程老师了(个人感觉哈)

参考视频连接:https://www.bilibili.com/video/BV1nJ411V7bd?p=1

页: [1]
查看完整版本: 数据结构栈和队列问题