From 190af1636a4ced977091355a2a2b3310800e9e3d Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Sat, 11 Jan 2025 00:36:56 +0800 Subject: [PATCH] =?UTF-8?q?2025-01-10=20=E9=98=9F=E5=88=97,=E7=8E=AF?= =?UTF-8?q?=E5=BD=A2=E9=98=9F=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/queue/ArrayCircleQueue.java | 85 +++++++++++++++++++ src/dataANDcalc/java/queue/ArrayQueue.java | 70 +++++++++++++++ 2 files changed, 155 insertions(+) create mode 100644 src/dataANDcalc/java/queue/ArrayCircleQueue.java create mode 100644 src/dataANDcalc/java/queue/ArrayQueue.java diff --git a/src/dataANDcalc/java/queue/ArrayCircleQueue.java b/src/dataANDcalc/java/queue/ArrayCircleQueue.java new file mode 100644 index 0000000..851b49f --- /dev/null +++ b/src/dataANDcalc/java/queue/ArrayCircleQueue.java @@ -0,0 +1,85 @@ +package queue; + +import java.util.Scanner; + +public class ArrayCircleQueue { + + private int maxSize; + private int front;//队列头前一个位置 + private int rear;//队列尾的位置 + private int[] queue; + + public ArrayCircleQueue(int maxSize){ + this.maxSize = maxSize; + queue = new int[this.maxSize]; + front = 0; + rear = 0; + } + + public boolean isFull() { + return (rear + 1) % this.maxSize == front; + } + + public boolean isEmpty() { + return rear == front; + } + + public void addQueue(int data){ + if (isFull()){ + System.out.println("队列已满"); + return; + } + queue[rear] = data; + rear = (rear + 1) % maxSize; + } + + public String getQueue(){ + if(isEmpty()){ + System.out.println("队列为空"); + return "队列为空"; + } + int data = queue[front]; + front = (front + 1) % maxSize; + return "获取到的数据为:" + data; + } + + public void showQueue() { + if(isEmpty()){ + System.out.println("队列为空"); + } + System.out.println("当前队列为:"); + int size = (rear + maxSize - front) % maxSize; + for (int i = front; i < front + size; i ++) { + System.out.print(queue[i%maxSize] + " "); + } + } + + public int size(){ + return (rear + maxSize - front) % maxSize; + } + + public static void main(String[] args) { + ArrayCircleQueue arrayQueue = new ArrayCircleQueue(5); + Scanner scan = new Scanner(System.in); + while (true) { + System.out.println("a存数, g取数, s查看, exit退出:"); + String handle = scan.next(); + if ("exit".equals(handle)){ + break; + } + if ("a".equals(handle)){ + System.out.println("请输入入队数据:"); + int data = scan.nextInt(); + arrayQueue.addQueue(data); + } + if ("g".equals(handle)){ + String resp = arrayQueue.getQueue(); + System.out.println(resp); + } + if ("s".equals(handle)){ + arrayQueue.showQueue(); + } + } + scan.close(); + } +} diff --git a/src/dataANDcalc/java/queue/ArrayQueue.java b/src/dataANDcalc/java/queue/ArrayQueue.java new file mode 100644 index 0000000..d918730 --- /dev/null +++ b/src/dataANDcalc/java/queue/ArrayQueue.java @@ -0,0 +1,70 @@ +package queue; + +import java.util.Scanner; + +public class ArrayQueue { + + private int maxSize; + private int front;//队列头前一个位置 + private int rear;//队列尾的位置 + private int[] queue; + + public ArrayQueue(int maxSize){ + this.maxSize = maxSize; + queue = new int[this.maxSize]; + front = -1; + rear = -1; + } + + public boolean isFull() { + return rear == this.maxSize - 1; + } + + public boolean isEmpty() { + return rear == front; + } + + public void addQueue(int data){ + if (isFull()){ + System.out.println("队列已满"); + return; + } + rear ++; + queue[rear] = data; + System.out.println("当前队列:"); + for(int n : queue){ + System.out.print(n + " "); + } + } + + public String getQueue(){ + if(isEmpty()){ + System.out.println("队列为空"); + return "队列为空"; + } + front++; + return "获取到的数据为:" + queue[front]; + } + + public static void main(String[] args) { + ArrayQueue arrayQueue = new ArrayQueue(5); + Scanner scan = new Scanner(System.in); + while (true) { + System.out.println("a存数, g取数, exit退出:"); + String handle = scan.next(); + if ("exit".equals(handle)){ + break; + } + if ("a".equals(handle)){ + System.out.println("请输入入队数据:"); + int data = scan.nextInt(); + arrayQueue.addQueue(data); + } + if ("g".equals(handle)){ + String resp = arrayQueue.getQueue(); + System.out.println(resp); + } + } + scan.close(); + } +}