【Java程式設計】使用Java模擬C/C++中的queue佇列
使用Java語言對C/C++中的佇列進行模擬
最近想要嘗試使用Java實現BFS廣度優先搜尋來解決迷宮問題,但是需要用到C/C++中的佇列,使用Java語言實現佇列模擬的程式碼如下:
//使用陣列模擬佇列——編寫一個ArrayQueue類
class ArrayQueue {
private int maxSize; // 表示陣列的最大容量
private int front; // 佇列頭
private int rear; // 佇列尾
private int[] arr; // 該陣列用於存放資料
// 建立佇列的構造器
public ArrayQueue(int maxSize) {
this.maxSize = maxSize;
arr = new int[maxSize];
front = -1; // 指向佇列頭部(指向的是佇列頭的前一個位置)
rear = -1;// 指向佇列尾部(指向的是佇列尾的資料)
}
// 判斷佇列是否滿
public boolean isFull() {
return rear == maxSize - 1;
}
// 判斷佇列是否為空
public boolean isEmpty() {
return rear == front;
}
// 新增資料到佇列
public void addQueue(int n) {
// 判斷佇列是否滿
if (isFull()) {
System.out.println("佇列滿,不能加入資料");
return;
}
rear++;// 讓rear後移
arr[rear] = n;
}
// 獲取佇列的資料
public int getQueue() {
// 判斷佇列是否空
if (isEmpty()) {
// 丟擲異常
throw new RuntimeException("佇列空,不能取出資料");
}
front++;// 讓front後移
return arr[front];
}
// 顯示佇列的所有資料
public void showQueue() {
// 遍歷
if (isEmpty()) {
System.out.println("佇列為空");
return;
}
for (int i : arr) {
System.out.printf("%d\t", i);
}
}
}
提供測試程式碼:
public static void main(String[] args) {
// 建立一個佇列,這裡初始化佇列大小為3
ArrayQueue arrayQueue = new ArrayQueue(3);
int key;// 接收使用者輸入
Scanner sc = new Scanner(System.in);
boolean loop = true;
// 輸出一個選單
while (loop) {
System.out.println();
System.out.println("1:顯示佇列");
System.out.println("2:新增資料到佇列");
System.out.println("3:從佇列獲取資料");
key = sc.nextInt();// 接收一個字元
switch (key) {
case 1:
arrayQueue.showQueue();
break;
case 2:
System.out.println("輸入一個數:");
int value = sc.nextInt();
arrayQueue.addQueue(value);
break;
case 3:
try {
int res = arrayQueue.getQueue();
System.out.println("取出的資料是:" + res);
} catch (Exception e) {
System.out.println(e.getMessage());
}
break;
}
}
}
相關文章
- POJ 2259 Team Queue【模擬佇列】佇列
- Java 中佇列的使用Java佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- java Queue佇列相關總結Java佇列
- C# 佇列(Queue)C#佇列
- Java併發程式設計:阻塞佇列Java程式設計佇列
- Java併發程式設計——阻塞佇列Java程式設計佇列
- 佇列(Queue)-c實現佇列
- java集合類——Stack棧類與Queue佇列Java佇列
- Java、C、C++中的陣列的比較JavaC++陣列
- 阻塞佇列一——java中的阻塞佇列佇列Java
- Java中的阻塞佇列Java佇列
- 在C++程式碼中建立Java虛擬機器。C++Java虛擬機
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- Java 中模擬 C# 的擴充套件方法JavaC#套件
- 模擬標準c++中的RttiC++
- JDK QUEUE佇列JDK佇列
- 最吸金的三大程式設計能語言 C++掉出佇列程式設計C++佇列
- Java 併發程式設計 —– AQS(抽象佇列同步器)Java程式設計AQS抽象佇列
- Java 併發程式設計 ----- AQS(抽象佇列同步器)Java程式設計AQS抽象佇列
- 資料結構學習(C++)——佇列應用(事件驅動模擬) (轉)資料結構C++佇列事件
- 淺談Java、PHP、C++程式設計的優缺點JavaPHPC++程式設計
- c++中stack、queue、vector的用法C++
- java佇列Java佇列
- python佇列QueuePython佇列
- Java開發者使用C++寫程式踩的坑JavaC++
- Java使用程式碼模擬高併發操作Java
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- STL(十九)queue佇列容器佇列
- 調查:Java程式設計師最傷心,C++程式設計師最年老Java程式設計師C++
- 一個程式設計師的Java和C++學習之路(整理)程式設計師JavaC++
- 寫給Java程式設計師的Java虛擬機器學習指南Java程式設計師虛擬機機器學習
- 使用java模擬scala函數語言程式設計將函式作為引數傳入方法中Java函數程式設計函式
- c/c++線性迴圈佇列C++佇列
- 如何在C#中模擬C++的聯合(Union)?[C#, C++] How To Simulate C++ Union In C#?C#C++
- 全球有多少 C/C++ 程式設計師?Java 和 Python 又有多少?C++程式設計師JavaPython
- 從 C/C++ 程式呼叫 Java 程式碼C++Java