Share queue implementation in java

minhkhanhphoto

New member
#Java #Queue #LinkedList #Datstracture #Programming ## Một dấu ấn hàng đợi trong Java là gì?

Một dấu ấn hàng đợi là một cấu trúc dữ liệu cho phép bạn chèn và loại bỏ các phần tử từ phía trước hàng đợi trong thời gian không đổi.Điều này trái ngược với hàng đợi thông thường, đòi hỏi thời gian O (n) để chèn hoặc loại bỏ một phần tử từ phía trước hàng đợi.

Các dấu ấn hàng đợi được thực hiện bằng một danh sách được liên kết.Mỗi nút trong danh sách được liên kết chứa hai con trỏ: một con trỏ tiếp theo và một con trỏ trước.Con trỏ tiếp theo trỏ đến nút tiếp theo trong danh sách và con trỏ trước đó chỉ vào nút trước đó trong danh sách.

Để chèn một phần tử vào dấu ấn hàng đợi, bạn chỉ cần tạo một nút mới và thêm nó vào mặt trước của danh sách.Để xóa một phần tử khỏi dấu ấn hàng đợi, bạn chỉ cần xóa nút ở phía trước danh sách.

Các dấu ấn hàng đợi là một cấu trúc dữ liệu rất hiệu quả cho các ứng dụng yêu cầu chèn thường xuyên và loại bỏ khỏi phía trước hàng đợi.Tuy nhiên, chúng không hiệu quả cho các ứng dụng yêu cầu chèn thường xuyên và loại bỏ khỏi giữa hoặc sau của hàng đợi.

## Cách thực hiện dấu ấn hàng đợi trong Java

Để thực hiện dấu ấn hàng đợi trong Java, bạn có thể sử dụng mã sau:

`` `java
lớp công khai QueueImprint <T> {

Nút riêng <T> đầu;
nút riêng <t> đuôi;

QueueImprint () {
đầu = null;
đuôi = null;
}

công khai void enqueue (phần tử t) {
Nút <t> newNode = new node <> (phần tử);
if (head == null) {
đầu = newNode;
đuôi = newnode;
} khác {
newnode.next = head;
head.previous = newNode;
đầu = newNode;
}
}

công khai t dequeue () {
if (head == null) {
Ném Mới bất hợp pháp mới ("Hàng đợi trống");
}

Phần tử t = head.element;
đầu = head.next;
if (head == null) {
đuôi = null;
} khác {
đầu.previous = null;
}

trở lại phần tử;
}

boolean isempty () {
trả về đầu == null;
}

Nút lớp riêng <T> {

yếu tố t riêng tư;
Nút riêng <T> Tiếp theo;
Nút riêng <T> trước đó;

nút công khai (phần tử t) {
this.element = phần tử;
this.next = null;
this.previous = null;
}
}
}
`` `

## Ưu điểm và nhược điểm của các dấu ấn hàng đợi

Các dấu ấn hàng đợi có một số lợi thế so với hàng đợi thông thường, bao gồm:

*** Chèn và loại bỏ thời gian không đổi khỏi phía trước hàng đợi: ** Đây là lợi thế chính của các dấu ấn hàng đợi.Nó làm cho chúng rất hiệu quả cho các ứng dụng yêu cầu chèn thường xuyên và loại bỏ khỏi phía trước hàng đợi.
*** O (1) Độ phức tạp không gian: ** Các dấu ấn hàng đợi có độ phức tạp không gian không đổi, bất kể số lượng phần tử trong hàng đợi.Điều này làm cho chúng rất hiệu quả cho các ứng dụng có số lượng lớn các yếu tố.

Các dấu ấn hàng đợi cũng có một số nhược điểm, bao gồm:

*** Không hiệu quả cho việc chèn và loại bỏ khỏi giữa hoặc sau của hàng đợi: ** Các dấu ấn hàng đợi không hiệu quả cho các lần chèn và loại bỏ từ giữa hoặc phía sau của hàng đợihàng đợi.Điều này là do họ yêu cầu thời gian O (n) để tìm nút trước hoặc sau nút mong muốn.
*** phức tạp hơn để thực hiện so với hàng đợi thông thường: ** Các dấu ấn hàng đợi phức tạp hơn để thực hiện so với hàng đợi thông thường.Điều này là do họ yêu cầu sử dụng danh sách liên kết gấp đôi.

## Phần kết luận

Các dấu ấn hàng đợi là một cấu trúc dữ liệu có thể được sử dụng để thực hiện hàng đợi với việc chèn và loại bỏ thời gian liên tục khỏi phía trước hàng đợi.Chúng rất hiệu quả đối với các ứng dụng yêu cầu chèn thường xuyên và loại bỏ khỏi mặt trước của
=======================================
#Java #Queue #LinkedList #datastructure #Programming ## What is a queue imprint in Java?

A queue imprint is a data structure that allows you to insert and remove elements from the front of a queue in constant time. This is in contrast to a regular queue, which requires O(n) time to insert or remove an element from the front of the queue.

Queue imprints are implemented using a linked list. Each node in the linked list contains two pointers: a next pointer and a previous pointer. The next pointer points to the next node in the list, and the previous pointer points to the previous node in the list.

To insert an element into a queue imprint, you simply create a new node and add it to the front of the list. To remove an element from a queue imprint, you simply remove the node at the front of the list.

Queue imprints are a very efficient data structure for applications that require frequent insertions and removals from the front of a queue. However, they are not as efficient for applications that require frequent insertions and removals from the middle or back of a queue.

## How to implement a queue imprint in Java

To implement a queue imprint in Java, you can use the following code:

```java
public class QueueImprint<T> {

private Node<T> head;
private Node<T> tail;

public QueueImprint() {
head = null;
tail = null;
}

public void enqueue(T element) {
Node<T> newNode = new Node<>(element);
if (head == null) {
head = newNode;
tail = newNode;
} else {
newNode.next = head;
head.previous = newNode;
head = newNode;
}
}

public T dequeue() {
if (head == null) {
throw new IllegalStateException("Queue is empty");
}

T element = head.element;
head = head.next;
if (head == null) {
tail = null;
} else {
head.previous = null;
}

return element;
}

public boolean isEmpty() {
return head == null;
}

private class Node<T> {

private T element;
private Node<T> next;
private Node<T> previous;

public Node(T element) {
this.element = element;
this.next = null;
this.previous = null;
}
}
}
```

## Advantages and disadvantages of queue imprints

Queue imprints have a number of advantages over regular queues, including:

* **Constant-time insertion and removal from the front of the queue:** This is the main advantage of queue imprints. It makes them very efficient for applications that require frequent insertions and removals from the front of a queue.
* **O(1) space complexity:** Queue imprints have a constant space complexity, regardless of the number of elements in the queue. This makes them very efficient for applications with a large number of elements.

Queue imprints also have a number of disadvantages, including:

* **Not as efficient for insertions and removals from the middle or back of the queue:** Queue imprints are not as efficient for insertions and removals from the middle or back of the queue as they are for insertions and removals from the front of the queue. This is because they require O(n) time to find the node before or after the desired node.
* **More complex to implement than regular queues:** Queue imprints are more complex to implement than regular queues. This is because they require the use of doubly linked lists.

## Conclusion

Queue imprints are a data structure that can be used to implement queues with constant-time insertion and removal from the front of the queue. They are very efficient for applications that require frequent insertions and removals from the front of a
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top