数据结构与算法-栈、队列

队列

题目1

数组实现队列
tips:使用环形数组

public class Code04_RingArray {
  public static class MyQueue {
    private int[] arr;
    private int pushi;
    private int polli;
    private int size;
    private final int limit;
    public MyQueue(int limit) {
      arr = new int[limit];
      pushi = 0;
      polli = 0;
      size = 0;
      this.limit = limit;
    }
    public void push(int value) {
      if (size == limit) {
        throw new RuntimeException("栈满了,不能再加了");
      }
      size++;
      arr[pushi] = value;
      pushi = nextIndex(pushi);
    }
    public int pop() {
      if (size == 0) {
        throw new RuntimeException("栈空了,不能再拿了");
    }
      size--;
      int ans = arr[polli];
      polli = nextIndex(polli);
      return ans;
    }
    public boolean isEmpty() {
      return size == 0;
    }
    // 如果现在的下标是i,返回下一个位置
    private int nextIndex(int i) {
      return i < limit - 1 ? i + 1 : 0;
    }
  }
}

题目2

栈怎么实现图?队列怎么实现图?

阅读 74

推荐阅读