• java数据结构——队列、循环队列(Queue)


    每天进步一点点,坚持就是成功。

    1、队列

     1 /**
     2  * 人无完人,如有bug,还请斧正
     3  * 继续学习Java数据结构————队列(列队) 
     4  * 队列和栈一样,都是使用数组,但是队列多了一个队头,队头访问数据,队尾插入数据
     5  * 队列的重要数据特性————先进先出
     6  * 入队、出队、队满、队空、查看
     7  */
     8 public class Queue {
     9     private long arr[];
    10     private int Maxsize;// 最大容量
    11     private int front;// 队头,访问数据
    12     private int rear;// 队尾,插入数据
    13     private int elements;// 有效数据
    14  
    15     public Queue(int size) {
    16         this.Maxsize = size;
    17         arr = new long[Maxsize];
    18         front = 0;// 下标为0开始访问
    19         rear = -1;// 相当于栈的指针
    20         elements = 0;
    21     }
    22     // 有效数据
    23     public void show() {
    24         System.out.println(elements);
    25     }
    26     // 查看当前指向数据
    27     public long peek() {
    28         return arr[front];
    29     }
    30     // 入队
    31     public void add(int value) {
    32         arr[++rear] = value;
    33         elements++;
    34     }
    35     // 出队
    36     public long remove() {
    37         long value = arr[front++];// 队头从0开始
    38         elements--;
    39         return value;
    40     }
    41     // 队满
    42     public boolean isEmpty() {
    43         return elements == 0;
    44     }
    45     // 队空
    46     public boolean isFull() {
    47         return elements == Maxsize;
    48     }
    49  
    50     public static void main(String[] args) {
    51         Queue q = new Queue(3);
    52         q.add(52);
    53         q.add(2);
    54         q.add(6);
    55          
    56         while(!q.isEmpty()){
    57             System.out.print(q.remove()+" ");//先进先出
    58         }
    59          
    60     }
    61  
    62 }

     

     

    2、循环队列

    队列存在弊端,超过最大长度就会抛出异常,这是不好的,所以我们必须了解循环队列,即使超过长度在添加也是可行的。

     1 //循环队列
     2 public class Queue {
     3     private long arr[];
     4     private int Maxsize;// 最大容量
     5     private int front;// 队头,访问数据
     6     private int rear;// 队尾,插入数据
     7     private int elements;// 有效数据
     8 
     9     public Queue(int size) {
    10         this.Maxsize = size;
    11         arr = new long[Maxsize];
    12         front = 0;// 下标为0开始访问
    13         rear = -1;// 相当于栈的指针
    14         elements = 0;
    15     }
    16 
    17     // 有效数据
    18     public void show() {
    19         System.out.println(elements);
    20     }
    21 
    22     // 查看当前指向数据
    23     public long peek() {
    24         return arr[front];
    25     }
    26 
    27     // 入队
    28     public void add(int value) {
    29         if (rear == arr.length - 1) {// rear初始值为-1,下标0-99
    30             rear = -1;// 重置队尾
    31         }
    32         arr[++rear] = value;// 这时候指向第一个位置
    33         elements++;
    34     }
    35 
    36     // 出队
    37     public long remove() {
    38         long value = arr[front++];// 先执行该句,front是否等于arr.length
    39         if (front == arr.length) {// 2+1=3
    40             front = 0;// 重置队头
    41         }
    42         elements--;
    43         return value;
    44     }
    45 
    46     // 队满
    47     public boolean isEmpty() {
    48         return elements == 0;
    49     }
    50 
    51     // 队空
    52     public boolean isFull() {
    53         return elements == Maxsize;
    54     }
    55 
    56     public static void main(String[] args) {
    57         Queue q = new Queue(3);
    58         q.add(52);
    59         q.add(2);
    60         q.add(6);
    61         q.add(6);
    62         q.add(6);
    63 
    64         while (!q.isEmpty()) {
    65             System.out.print(q.remove() + " ");// 先进先出
    66         }
    67 
    68     }
    69 
    70 }

     

     

      

  • 相关阅读:
    java实现报数游戏
    java实现取字母组成串
    java实现取字母组成串
    java实现取字母组成串
    java实现取字母组成串
    java实现取字母组成串
    java实现填写算式
    java实现填写算式
    java实现填写算式
    java实现填写算式
  • 原文地址:https://www.cnblogs.com/hardhp74520/p/11305560.html
Copyright © 2020-2023  润新知