IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数组实现环形链表 -> 正文阅读

[数据结构与算法]数组实现环形链表

一、数组实现环形链表

package com.bear.queue;

/**
 * @author Spring-_-Bear
 * @datetime 2022/3/10 15:43
 */
public class CircleArrayQueue {
   private final int maxSize;
   private final int[] array;
   /**
    * 队列头指针:初始化为 0
    */
   private int front;
   /**
    * 队列尾指针:初始化为 0
    */
   private int rear;

   public CircleArrayQueue(int maxSize) {
      this.maxSize = maxSize;
      this.array = new int[maxSize];
   }

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

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

   /**
    * 添加数据到队列尾
    *
    * @param data data
    */
   public void add(int data) {
      if (isFull()) {
         System.out.println("队列已满,无法添加数据");
         return;
      }
      array[rear] = data;
      rear = (rear + 1) % maxSize;
   }

   /**
    * 获取队头元素
    *
    * @return data
    */
   public int get() {
      if (isEmpty()) {
         throw new RuntimeException("队列为空,无法取出数据");
      }
      int temp = array[front];
      front = (front + 1) % maxSize;
      return temp;
   }

   /**
    * 打印队列所有有效元素
    */
   public void list() {
      if (isEmpty()) {
         System.out.println("队列为空,无数据");
         return;
      }
      for (int i = front; i < front + dataSize(); i++) {
         int index = i % maxSize;
         System.out.printf("array[%d] = %d\n", index, array[index]);
      }
   }

   /**
    * 取得队头元素
    *
    * @return data
    */
   public int peek() {
      if (isEmpty()) {
         throw new RuntimeException("队列为空,无数据");
      }
      return array[front];
   }

   /**
    * 求出当前队列中的有效数据个数
    *
    * @return count
    */
   public int dataSize() {
      return (rear - front + maxSize) % maxSize;
   }
}

二、实现测试

package com.bear.queue;


import java.util.Scanner;

/**
 * @author Spring-_-Bear
 * @datetime 2022/3/10 15:45
 */
public class CircleArrayQueueTest {
    public static void main(String[] args) {
        CircleArrayQueue circleArrayQueue = new CircleArrayQueue(4);
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("s - show");
            System.out.println("a -add");
            System.out.println("g - get");
            System.out.println("p - peek");
            System.out.println("q - quit");
            System.out.print("Please input your choice:");
            String choice = scanner.next();
            switch (choice) {
                case "s":
                    circleArrayQueue.list();
                    break;
                case "a":
                    System.out.print("Input the data you want to add:");
                    int i = scanner.nextInt();
                    circleArrayQueue.add(i);
                    break;
                case "g":
                    System.out.println("The data you get is " + circleArrayQueue.get());
                    break;
                case "p":
                    System.out.println("The peek data is " + circleArrayQueue.peek());
                    break;
                case "q":
                    System.exit(0);
                default:
                    System.out.println("Input error, input again");
                    break;
            }
        }
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:47:47  更:2022-03-12 17:50:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:45:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码