2025-01-10 队列,环形队列
This commit is contained in:
parent
6be199baf1
commit
190af1636a
85
src/dataANDcalc/java/queue/ArrayCircleQueue.java
Normal file
85
src/dataANDcalc/java/queue/ArrayCircleQueue.java
Normal file
@ -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();
|
||||||
|
}
|
||||||
|
}
|
70
src/dataANDcalc/java/queue/ArrayQueue.java
Normal file
70
src/dataANDcalc/java/queue/ArrayQueue.java
Normal file
@ -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();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user