示例1: 实现Stack的Java程序
public class Queue { int SIZE = 5; int items[] = new int[SIZE]; int front, rear; Queue() { front =-1; rear =-1; } // check if the queue is full boolean isFull() { if (front == 0 && rear == SIZE-1) { return true; } return false; } // check if the queue is empty boolean isEmpty() { if (front ==-1) return true; else return false; } // insert elements to the queue void enQueue(int element) { // if queue is full if (isFull()) { System.out.println("Queue is full"); } else { if (front ==-1) { // mark front denote first element of queue front = 0; } rear++; // insert element at the rear items[rear] = element; System.out.println("Insert " + element); } } // delete element from the queue int deQueue() { int element; // if queue is empty if (isEmpty()) { System.out.println("Queue is empty"); return (-1); } else { // remove element from the front of queue element = items[front]; // if the queue has only one element if (front >= rear) { front =-1; rear =-1; } else { // mark next element as the front front++; } System.out.println( element + " Deleted"); return (element); } } // display element of the queue void display() { int i; if (isEmpty()) { System.out.println("Empty Queue"); } else { // display the front of the queue System.out.println("\nFront index-> " + front); // display element of the queue System.out.println("Items-> "); for (i = front; i <= rear; i++) System.out.print(items[i] + " "); // display the rear of the queue System.out.println("\nRear index-> " + rear); } } public static void main(String[] args) { // create an object of Queue class Queue q = new Queue(); // try to delete element from the queue // currently queue is empty // so deletion is not possible q.deQueue(); // insert elements to the queue for(int i = 1; i < 6; i ++) { q.enQueue(i); } // 6th element can't be added to queue because queue is full q.enQueue(6); q.display(); // deQueue removes element entered first i.e. 1 q.deQueue(); // Now we have just 4 elements q.display(); } }
输出
Queue is empty Insert 1 Insert 2 Insert 3 Insert 4 Insert 5 Queue is full Front index-> 0 Items-> 1 2 3 4 5 Rear index-> 4 1 Deleted Front index-> 1 Items-> 2 3 4 5 Rear index-> 4
在上面的例子中,我们已经用 Java 实现了队列数据结构。
要了解队列的工作原理,请访问队列数据结构。
示例 2: 使用 Queue 接口实现堆栈
Java 提供了一个内置的
Queue
接口,可用于实现队列。
import java.util.Queue; import java.util.LinkedList; class Main { public static void main(String[] args) { // Creating Queue using the LinkedList class Queue<Integer> numbers = new LinkedList<>(); // enqueue // insert element at the rear of the queue numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); // dequeue // delete element from the front of the queue int removedNumber = numbers.poll(); System.out.println("Removed Element: " + removedNumber); System.out.println("Queue after deletion: " + numbers); } }
输出
Queue: [1, 2, 3] Removed Element: 1 Queue after deletion: [2, 3]
在上面的例子中,我们使用了
numbers.offer()-向队列尾部插入元素
numbers.poll()-从队列前面移除一个元素
Queue
接口在 Java 中实现了队列。在这里,我们使用了实现
Queue
接口的
LinkedList
类。
注意,我们在创建队列时使用了尖括号
。它表示队列是泛型类型。
我们也可以使用其他接口和类来代替
Deque 接口
ArrayDeque 类
PriorityQueue 类
Queue
和
LinkedList
。例如,