nguyenkhatu.trinh
New member
#Java #Queue #Interview #Programming #Datstrure ## Câu hỏi phỏng vấn hàng đợi Java
1. Hàng đợi là gì?
Hàng đợi là một cấu trúc dữ liệu tuyến tính trong đó các phần tử được thêm vào một đầu (được gọi là phía sau) và được loại bỏ khỏi đầu kia (được gọi là mặt trước).Các phần tử được thêm vào hàng đợi theo thứ tự đầu tiên, đầu tiên (FIFO), có nghĩa là phần tử được thêm vào đầu tiên là yếu tố đầu tiên được loại bỏ.
2. Các loại hàng đợi khác nhau là gì?
Có hai loại hàng đợi chính:
*** Hàng đợi liên kết đơn: ** Trong một hàng đợi được liên kết đơn, mỗi phần tử trong hàng đợi chứa một con trỏ tới phần tử tiếp theo trong hàng đợi.Phần tử đầu tiên trong hàng đợi được gọi là đầu và phần tử cuối cùng trong hàng đợi được gọi là đuôi.
*** Hàng đợi liên kết gấp đôi: ** Trong một hàng đợi liên kết gấp đôi, mỗi phần tử trong hàng đợi chứa một con trỏ tới phần tử tiếp theo trong hàng đợi và một con trỏ tới phần tử trước trong hàng đợi.Điều này cho phép các yếu tố được thêm và loại bỏ từ một trong hai đầu của hàng đợi.
3. Các hoạt động có thể được thực hiện trên hàng đợi là gì?
Các hoạt động sau đây có thể được thực hiện trên hàng đợi:
*** Enqueue: ** Thêm một phần tử vào cuối hàng đợi.
*** Dequeue: ** Loại bỏ một phần tử từ phía trước hàng đợi.
*** PEEK: ** Trả về phần tử ở phía trước hàng đợi mà không cần xóa nó.
*** isempty: ** Kiểm tra xem hàng đợi có trống không.
*** Kích thước: ** Trả về số lượng các phần tử trong hàng đợi.
4. Làm thế nào để bạn thực hiện một hàng đợi trong Java?
Có một số cách để thực hiện một hàng đợi trong Java.Một cách phổ biến là sử dụng một danh sách được liên kết.Một danh sách được liên kết là một cấu trúc dữ liệu bao gồm một loạt các nút, mỗi nút chứa dữ liệu và một con trỏ tới nút tiếp theo trong danh sách.Để thực hiện hàng đợi bằng danh sách được liên kết, chúng tôi có thể tạo một lớp gọi là `hàng đợi 'có các thành viên sau:
* Một trường riêng gọi là `head` chỉ vào nút đầu tiên trong hàng đợi.
* Một trường riêng gọi là `đuôi` chỉ vào nút cuối cùng trong hàng đợi.
* Một phương thức công khai gọi là `enqueue ()` thêm một phần tử vào cuối hàng đợi.
* Một phương thức công khai gọi là `dequeue ()` loại bỏ một phần tử từ phía trước của hàng đợi.
* Một phương thức công khai gọi là `peek ()` trả về phần tử ở phía trước của hàng đợi mà không xóa nó.
* Một phương thức công khai gọi là `isempty ()` Kiểm tra xem hàng đợi có trống không.
* Một phương thức công khai gọi là `size ()` trả về số lượng phần tử trong hàng đợi.
Mã sau đây cho thấy việc triển khai hàng đợi bằng danh sách được liên kết:
`` `java
Hàng đợi lớp công khai <T> {
Nút riêng <T> đầu;
nút riêng <t> đuôi;
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 {
đuôi.next = newNode;
đuôi = 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");
}
T phần tử = head.data;
đầu = head.next;
if (head == null) {
đuôi = null;
}
trở lại phần tử;
}
công khai t peek () {
if (head == null) {
Ném Mới bất hợp pháp mới ("Hàng đợi trống");
}
trả lại đầu.data;
}
boolean isempty () {
trả về đầu == null;
}
công khai int size () {
int size = 0;
Nút <t> nút = đầu;
while (nút! = null) {
Kích thước ++;
nút = node.next;
}
Kích thước trở lại
=======================================
#Java #Queue #Interview #Programming #datastructure ##Java Queue Interview Questions
1. What is a queue?
A queue is a linear data structure in which elements are added at one end (called the rear) and removed from the other end (called the front). Elements are added to the queue in a first-in, first-out (FIFO) order, meaning that the element that was added first is the first element to be removed.
2. What are the different types of queues?
There are two main types of queues:
* **Singly-linked queues:** In a singly-linked queue, each element in the queue contains a pointer to the next element in the queue. The first element in the queue is called the head, and the last element in the queue is called the tail.
* **Doubly-linked queues:** In a doubly-linked queue, each element in the queue contains a pointer to the next element in the queue and a pointer to the previous element in the queue. This allows elements to be added and removed from either end of the queue.
3. What are the operations that can be performed on a queue?
The following operations can be performed on a queue:
* **Enqueue:** Adds an element to the end of the queue.
* **Dequeue:** Removes an element from the front of the queue.
* **Peek:** Returns the element at the front of the queue without removing it.
* **IsEmpty:** Checks if the queue is empty.
* **Size:** Returns the number of elements in the queue.
4. How do you implement a queue in Java?
There are several ways to implement a queue in Java. One common way is to use a linked list. A linked list is a data structure that consists of a series of nodes, each of which contains data and a pointer to the next node in the list. To implement a queue using a linked list, we can create a class called `Queue` that has the following members:
* A private field called `head` that points to the first node in the queue.
* A private field called `tail` that points to the last node in the queue.
* A public method called `enqueue()` that adds an element to the end of the queue.
* A public method called `dequeue()` that removes an element from the front of the queue.
* A public method called `peek()` that returns the element at the front of the queue without removing it.
* A public method called `isEmpty()` that checks if the queue is empty.
* A public method called `size()` that returns the number of elements in the queue.
The following code shows an implementation of a queue using a linked list:
```java
public class Queue<T> {
private Node<T> head;
private Node<T> tail;
public void enqueue(T element) {
Node<T> newNode = new Node<>(element);
if (head == null) {
head = newNode;
tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
}
public T dequeue() {
if (head == null) {
throw new IllegalStateException("Queue is empty");
}
T element = head.data;
head = head.next;
if (head == null) {
tail = null;
}
return element;
}
public T peek() {
if (head == null) {
throw new IllegalStateException("Queue is empty");
}
return head.data;
}
public boolean isEmpty() {
return head == null;
}
public int size() {
int size = 0;
Node<T> node = head;
while (node != null) {
size++;
node = node.next;
}
return size
1. Hàng đợi là gì?
Hàng đợi là một cấu trúc dữ liệu tuyến tính trong đó các phần tử được thêm vào một đầu (được gọi là phía sau) và được loại bỏ khỏi đầu kia (được gọi là mặt trước).Các phần tử được thêm vào hàng đợi theo thứ tự đầu tiên, đầu tiên (FIFO), có nghĩa là phần tử được thêm vào đầu tiên là yếu tố đầu tiên được loại bỏ.
2. Các loại hàng đợi khác nhau là gì?
Có hai loại hàng đợi chính:
*** Hàng đợi liên kết đơn: ** Trong một hàng đợi được liên kết đơn, mỗi phần tử trong hàng đợi chứa một con trỏ tới phần tử tiếp theo trong hàng đợi.Phần tử đầu tiên trong hàng đợi được gọi là đầu và phần tử cuối cùng trong hàng đợi được gọi là đuôi.
*** Hàng đợi liên kết gấp đôi: ** Trong một hàng đợi liên kết gấp đôi, mỗi phần tử trong hàng đợi chứa một con trỏ tới phần tử tiếp theo trong hàng đợi và một con trỏ tới phần tử trước trong hàng đợi.Điều này cho phép các yếu tố được thêm và loại bỏ từ một trong hai đầu của hàng đợi.
3. Các hoạt động có thể được thực hiện trên hàng đợi là gì?
Các hoạt động sau đây có thể được thực hiện trên hàng đợi:
*** Enqueue: ** Thêm một phần tử vào cuối hàng đợi.
*** Dequeue: ** Loại bỏ một phần tử từ phía trước hàng đợi.
*** PEEK: ** Trả về phần tử ở phía trước hàng đợi mà không cần xóa nó.
*** isempty: ** Kiểm tra xem hàng đợi có trống không.
*** Kích thước: ** Trả về số lượng các phần tử trong hàng đợi.
4. Làm thế nào để bạn thực hiện một hàng đợi trong Java?
Có một số cách để thực hiện một hàng đợi trong Java.Một cách phổ biến là sử dụng một danh sách được liên kết.Một danh sách được liên kết là một cấu trúc dữ liệu bao gồm một loạt các nút, mỗi nút chứa dữ liệu và một con trỏ tới nút tiếp theo trong danh sách.Để thực hiện hàng đợi bằng danh sách được liên kết, chúng tôi có thể tạo một lớp gọi là `hàng đợi 'có các thành viên sau:
* Một trường riêng gọi là `head` chỉ vào nút đầu tiên trong hàng đợi.
* Một trường riêng gọi là `đuôi` chỉ vào nút cuối cùng trong hàng đợi.
* Một phương thức công khai gọi là `enqueue ()` thêm một phần tử vào cuối hàng đợi.
* Một phương thức công khai gọi là `dequeue ()` loại bỏ một phần tử từ phía trước của hàng đợi.
* Một phương thức công khai gọi là `peek ()` trả về phần tử ở phía trước của hàng đợi mà không xóa nó.
* Một phương thức công khai gọi là `isempty ()` Kiểm tra xem hàng đợi có trống không.
* Một phương thức công khai gọi là `size ()` trả về số lượng phần tử trong hàng đợi.
Mã sau đây cho thấy việc triển khai hàng đợi bằng danh sách được liên kết:
`` `java
Hàng đợi lớp công khai <T> {
Nút riêng <T> đầu;
nút riêng <t> đuôi;
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 {
đuôi.next = newNode;
đuôi = 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");
}
T phần tử = head.data;
đầu = head.next;
if (head == null) {
đuôi = null;
}
trở lại phần tử;
}
công khai t peek () {
if (head == null) {
Ném Mới bất hợp pháp mới ("Hàng đợi trống");
}
trả lại đầu.data;
}
boolean isempty () {
trả về đầu == null;
}
công khai int size () {
int size = 0;
Nút <t> nút = đầu;
while (nút! = null) {
Kích thước ++;
nút = node.next;
}
Kích thước trở lại
=======================================
#Java #Queue #Interview #Programming #datastructure ##Java Queue Interview Questions
1. What is a queue?
A queue is a linear data structure in which elements are added at one end (called the rear) and removed from the other end (called the front). Elements are added to the queue in a first-in, first-out (FIFO) order, meaning that the element that was added first is the first element to be removed.
2. What are the different types of queues?
There are two main types of queues:
* **Singly-linked queues:** In a singly-linked queue, each element in the queue contains a pointer to the next element in the queue. The first element in the queue is called the head, and the last element in the queue is called the tail.
* **Doubly-linked queues:** In a doubly-linked queue, each element in the queue contains a pointer to the next element in the queue and a pointer to the previous element in the queue. This allows elements to be added and removed from either end of the queue.
3. What are the operations that can be performed on a queue?
The following operations can be performed on a queue:
* **Enqueue:** Adds an element to the end of the queue.
* **Dequeue:** Removes an element from the front of the queue.
* **Peek:** Returns the element at the front of the queue without removing it.
* **IsEmpty:** Checks if the queue is empty.
* **Size:** Returns the number of elements in the queue.
4. How do you implement a queue in Java?
There are several ways to implement a queue in Java. One common way is to use a linked list. A linked list is a data structure that consists of a series of nodes, each of which contains data and a pointer to the next node in the list. To implement a queue using a linked list, we can create a class called `Queue` that has the following members:
* A private field called `head` that points to the first node in the queue.
* A private field called `tail` that points to the last node in the queue.
* A public method called `enqueue()` that adds an element to the end of the queue.
* A public method called `dequeue()` that removes an element from the front of the queue.
* A public method called `peek()` that returns the element at the front of the queue without removing it.
* A public method called `isEmpty()` that checks if the queue is empty.
* A public method called `size()` that returns the number of elements in the queue.
The following code shows an implementation of a queue using a linked list:
```java
public class Queue<T> {
private Node<T> head;
private Node<T> tail;
public void enqueue(T element) {
Node<T> newNode = new Node<>(element);
if (head == null) {
head = newNode;
tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
}
public T dequeue() {
if (head == null) {
throw new IllegalStateException("Queue is empty");
}
T element = head.data;
head = head.next;
if (head == null) {
tail = null;
}
return element;
}
public T peek() {
if (head == null) {
throw new IllegalStateException("Queue is empty");
}
return head.data;
}
public boolean isEmpty() {
return head == null;
}
public int size() {
int size = 0;
Node<T> node = head;
while (node != null) {
size++;
node = node.next;
}
return size