溫馨提示×

java實現(xiàn)隊列queue數(shù)據(jù)結(jié)構(gòu)詳解

小云
94
2023-08-17 15:37:23
欄目: 編程語言

在Java中,可以使用數(shù)組或者鏈表來實現(xiàn)隊列數(shù)據(jù)結(jié)構(gòu)。

  1. 使用數(shù)組實現(xiàn)隊列
  • 首先,創(chuàng)建一個固定大小的數(shù)組作為隊列的容器。

  • 聲明兩個指針,一個指向隊列頭部(front),一個指向隊列尾部(rear)。

  • 當(dāng)插入一個元素時,將元素放入rear指針?biāo)赶虻奈恢?,并將rear指針向后移動一位。

  • 當(dāng)刪除一個元素時,將front指針?biāo)赶虻脑貏h除,并將front指針向后移動一位。

  • 當(dāng)隊列為空時,front和rear指針指向同一位置。

  1. 使用鏈表實現(xiàn)隊列
  • 首先,創(chuàng)建一個鏈表類,包含節(jié)點類和隊列類。

  • 節(jié)點類包含一個值和一個指向下一個節(jié)點的指針。

  • 隊列類包含一個指向頭節(jié)點的指針和一個指向尾節(jié)點的指針。

  • 當(dāng)插入一個元素時,創(chuàng)建一個新節(jié)點,并將其放入尾節(jié)點的后面,并更新尾節(jié)點指針。

  • 當(dāng)刪除一個元素時,將頭節(jié)點刪除,并更新頭節(jié)點指針。

  • 當(dāng)隊列為空時,頭節(jié)點和尾節(jié)點指針為空。

以下是使用數(shù)組實現(xiàn)隊列的示例代碼:

public class Queue {
private int capacity; // 隊列容量
private int[] data; // 存儲隊列元素的數(shù)組
private int front; // 隊列頭部指針
private int rear; // 隊列尾部指針
public Queue(int capacity) {
this.capacity = capacity;
this.data = new int[capacity];
this.front = 0;
this.rear = -1;
}
public boolean isEmpty() {
return (rear == -1);
}
public boolean isFull() {
return (rear == capacity - 1);
}
public void enqueue(int item) {
if (isFull()) {
System.out.println("Queue is full, cannot enqueue item.");
return;
}
data[++rear] = item;
}
public int dequeue() {
if (isEmpty()) {
System.out.println("Queue is empty, cannot dequeue item.");
return -1;
}
int item = data[front++];
if (front > rear) {
front = 0;
rear = -1;
}
return item;
}
public int peek() {
if (isEmpty()) {
System.out.println("Queue is empty, cannot peek item.");
return -1;
}
return data[front];
}
}

使用示例:

public class Main {
public static void main(String[] args) {
Queue queue = new Queue(5);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
System.out.println(queue.dequeue()); // 輸出1
System.out.println(queue.peek()); // 輸出2
System.out.println(queue.isEmpty()); // 輸出false
System.out.println(queue.isFull()); // 輸出false
queue.enqueue(4);
queue.enqueue(5);
System.out.println(queue.isFull()); // 輸出true
queue.enqueue(6); // 輸出Queue is full, cannot enqueue item.
System.out.println(queue.dequeue()); // 輸出2
System.out.println(queue.dequeue()); // 輸出3
System.out.println(queue.dequeue()); // 輸出4
System.out.println(queue.dequeue()); // 輸出5
System.out.println(queue.isEmpty()); // 輸出true
System.out.println(queue.peek()); // 輸出Queue is empty, cannot peek item.
}
}

以上是使用數(shù)組實現(xiàn)隊列的詳細(xì)解釋和示例代碼。你也可以嘗試使用鏈表來實現(xiàn)隊列數(shù)據(jù)結(jié)構(gòu)。

0