每天进步一点点,坚持就是成功。
1、队列
/** * 人无完人,如有bug,还请斧正 * 继续学习Java数据结构————队列(列队) * 队列和栈一样,都是使用数组,但是队列多了一个队头,队头访问数据,队尾插入数据 * 队列的重要数据特性————先进先出 * 入队、出队、队满、队空、查看 */ public class Queue { private long arr[]; private int Maxsize;// 最大容量 private int front;// 队头,访问数据 private int rear;// 队尾,插入数据 private int elements;// 有效数据 public Queue(int size) { this.Maxsize = size; arr = new long[Maxsize]; front = 0;// 下标为0开始访问 rear = -1;// 相当于栈的指针 elements = 0; } // 有效数据 public void show() { System.out.println(elements); } // 查看当前指向数据 public long peek() { return arr[front]; } // 入队 public void add(int value) { arr[++rear] = value; elements++; } // 出队 public long remove() { long value = arr[front++];// 队头从0开始 elements--; return value; } // 队满 public boolean isEmpty() { return elements == 0; } // 队空 public boolean isFull() { return elements == Maxsize; } public static void main(String[] args) { Queue q = new Queue(3); q.add(52); q.add(2); q.add(6); while(!q.isEmpty()){ System.out.print(q.remove()+" ");//先进先出 } } }
2、循环队列
队列存在弊端,超过最大长度就会抛出异常,这是不好的,所以我们必须了解循环队列,即使超过长度在添加也是可行的。
//循环队列 public class Queue { private long arr[]; private int Maxsize;// 最大容量 private int front;// 队头,访问数据 private int rear;// 队尾,插入数据 private int elements;// 有效数据 public Queue(int size) { this.Maxsize = size; arr = new long[Maxsize]; front = 0;// 下标为0开始访问 rear = -1;// 相当于栈的指针 elements = 0; } // 有效数据 public void show() { System.out.println(elements); } // 查看当前指向数据 public long peek() { return arr[front]; } // 入队 public void add(int value) { if (rear == arr.length - 1) {// rear初始值为-1,下标0-99 rear = -1;// 重置队尾 } arr[++rear] = value;// 这时候指向第一个位置 elements++; } // 出队 public long remove() { long value = arr[front++];// 先执行该句,front是否等于arr.length if (front == arr.length) {// 2+1=3 front = 0;// 重置队头 } elements--; return value; } // 队满 public boolean isEmpty() { return elements == 0; } // 队空 public boolean isFull() { return elements == Maxsize; } public static void main(String[] args) { Queue q = new Queue(3); q.add(52); q.add(2); q.add(6); q.add(6); q.add(6); while (!q.isEmpty()) { System.out.print(q.remove() + " ");// 先进先出 } } }