Java教程

Java 实现队列数据结构的程序

实现队列数据结构的Java程序

在这个例子中,我们将学习用 Java 实现队列数据结构。
要理解此示例,您应该了解以下Java 编程主题:
Java 队列接口 Java 泛型

示例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]
在上面的例子中,我们使用了 Queue 接口在 Java 中实现了队列。在这里,我们使用了实现 Queue 接口的 LinkedList 类。
numbers.offer()-向队列尾部插入元素 numbers.poll()-从队列前面移除一个元素
注意,我们在创建队列时使用了尖括号 。它表示队列是泛型类型。
我们也可以使用其他接口和类来代替 QueueLinkedList。例如,
Deque 接口 ArrayDeque 类 PriorityQueue 类
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4