【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;
}
}
}
相關文章
- C++ STL 優先佇列 (priority_queue)C++佇列
- java Queue佇列相關總結Java佇列
- C# 佇列(Queue)C#佇列
- Java併發程式設計——阻塞佇列Java程式設計佇列
- Java併發程式設計:阻塞佇列Java程式設計佇列
- 佇列(Queue)-c實現佇列
- java集合類——Stack棧類與Queue佇列Java佇列
- 阻塞佇列一——java中的阻塞佇列佇列Java
- Java中的阻塞佇列Java佇列
- 最吸金的三大程式設計能語言 C++掉出佇列程式設計C++佇列
- Java 併發程式設計 —– AQS(抽象佇列同步器)Java程式設計AQS抽象佇列
- Java 併發程式設計 ----- AQS(抽象佇列同步器)Java程式設計AQS抽象佇列
- 淺談Java、PHP、C++程式設計的優缺點JavaPHPC++程式設計
- 程式設計競賽中 C/C++ I/O 的使用程式設計C++
- Team Queue(佇列)佇列
- JDK QUEUE佇列JDK佇列
- python佇列QueuePython佇列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- Java 中模擬 C# 的擴充套件方法JavaC#套件
- java佇列Java佇列
- 1284 海港 普及組 NOIP2016 佇列基礎 簡單列舉 簡單模擬 優先佇列(priority_queue)佇列
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- Java開發者使用C++寫程式踩的坑JavaC++
- Java使用程式碼模擬高併發操作Java
- c/c++線性迴圈佇列C++佇列
- C++模組2:物件導向程式設計C++物件程式設計
- OC/Swift/C/C++混合使用的程式設計姿勢SwiftC++程式設計
- 【java】【集合】LinkedList的特有功能,用LinkList模擬棧和佇列資料結構Java佇列資料結構
- C++資料結構-佇列C++資料結構佇列
- 迴圈佇列C++實現佇列C++
- Linux C/C++程式設計中的多執行緒程式設計基本概念LinuxC++程式設計執行緒
- C++ 遍歷queueC++
- C、C++、Java到Python,程式設計入門學習什麼語言好?C++JavaPython程式設計
- java 棧與佇列Java佇列
- 重走JAVA程式設計之路(一)列舉Java程式設計
- 大規模C++程式設計 -- 基礎知識C++程式設計
- laravel原始碼分析-佇列QueueLaravel原始碼佇列
- C++ queue的注意事項C++