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