Chia Sẻ Tìm hiểu về lớp Queue trong C#

uocmo_kchodoi

Moderator
Queue (hay còn gọi là hàng đợi) là một cấu trúc dữ liệu hoạt động theo nguyên lý FIFO(First In First Out). Người ta hay gọi nó là hàng đợi bởi vì nó hoạt động giống như việc xếp hàng đợi chờ gì đó trong thực tế vậy.

Nó được sử dụng khi bạn cần truy cập các item theo dạng First-in, First-out. Khi bạn thêm một item vào trong danh sách, nó được gọi là enqueue và khi bạn gỡ bỏ một item, nó được gọi làdeque.

1. Đặc điểm của Queue

  • Là một danh sách lưu trữ các đối tượng nhưng không thể truy cập các phần tử thông qua chỉ số phần tử được.
  • Hành động thêm phần tử vào Queue được gọi là Enqueue (xếp hàng).
  • Hành động lấy phần tử ra khỏi Queue được gọi là Dequeue (ra khỏi hàng). Và luôn luôn lấy ra phần tử được thêm vào đầu tiên.
Queue rất giống Stack chỉ khác ở nguyên lý hoạt động thôi nên Stack có gì Queue sẽ có cái tương tự như vậy.

Do Queue cũng là 1 Collections nên để sử dụng ta cần thêm thư viện System.Collectionsbằng câu lệnh:

using System.Collections;

Trước khi sử dụng ta cần khởi tạo vùng nhớ bằng toán tử new:

Queue MyQueue = new Queue(); // khởi tạo 1 Queue rỗng

Bạn cũng có chỉ định sức chứa (Capacity) ngay lúc khởi tạo bằng cách thông qua constructor được hỗ trợ sẵn:

Queue MyQueue2 = new Queue(5); // khởi tạo 1 Queue và chỉ định sức chứa ban đầu là 5

Bạn cũng có thể khởi tạo 1 Queue chứa các phần tử được sao chép từ một danh sách khác:

// khởi tạo 1 mảng bất kỳ
ArrayList MyArray = new ArrayList();
MyArray.Add(5);
MyArray.Add(9);
MyArray.Add(10);

// Khởi tạo 1 Queue và sao chép giá trị của các phần tử từ MyArray vào Queue.
Queue MyQueue3 = new Queue(MyArray);

2. Phương thức và Thuộc tính của lớp Queue trong C#

Dưới đây liệt kê các thuộc tính được sử dụng phổ biến của lớp Queue trong C#:

Count: Lấy số phần tử được chứa trong Queue

Dưới đây liệt kê các phương thức được sử dụng phổ biến của lớp Queue trong C#:

1 public virtual void Clear();
Gỡ bỏ tất cả phần tử từ Queue

2 public virtual bool Contains(object obj);
Xác định có hay không một phần tử là trong Queue

3 public virtual object Dequeue();
Gỡ bỏ và trả về đối tượng tại phần bắt đầu của Queue

4 public virtual void Enqueue(object obj);
Thêm một phần tử vào phần cuối của Queue

5 public virtual object[] ToArray();
Sao chép Queue tới một mảng mới

6 public virtual void TrimToSize();
Thiết lập capacity tới số phần tử thực sự trong Queue

Ví dụ

using System;
using System.Collections;
namespace VietJackCsharp
{
class TestCsharp
{
static void Main(string[] args)
{
Console.WriteLine("Vi du minh hoa Queue trong C#");
Console.WriteLine("-------------------------------------");
SortedList ht = new SortedList();

Queue q = new Queue();

q.Enqueue('A');
q.Enqueue('M');
q.Enqueue('G');
q.Enqueue('W');

Console.WriteLine("1 - Hien thi Queue hien tai: ");
foreach (char c in q) Console.Write(c + " ");

Console.WriteLine();
q.Enqueue('V');
q.Enqueue('H');
Console.WriteLine("2 - Hien thi Queue hien tai: ");
foreach (char c in q) Console.Write(c + " ");

Console.WriteLine();
Console.WriteLine("Xoa mot so gia tri!!!");
char ch = (char)q.Dequeue();
Console.WriteLine("Gia tri bi xoa la: {0}", ch);
ch = (char)q.Dequeue();
Console.WriteLine("Gia tri bi xoa la: {0}", ch);

Console.ReadKey();
}
}
}
Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

queue.PNG

Nguồn: Sưu tầm
 
Sửa lần cuối bởi điều hành viên:
Lớp Queue trong C# biểu diễn một tập hợp First-in, First-out của các đối tượng.
Nó được sử dụng khi bạn cần truy cập các item theo dạng First-in, First-out. Khi bạn thêm một item vào trong danh sách, nó được gọi là enqueue và khi bạn gỡ bỏ một item, nó được gọi là deque.
 

Trending content

VnKienthuc lúc này

Không có thành viên trực tuyến.

Định hướng

Diễn đàn VnKienthuc.com là nơi thảo luận và chia sẻ về mọi kiến thức hữu ích trong học tập và cuộc sống, khởi nghiệp, kinh doanh,...
Top