Tìm hiểu về hàng đợi Queue và ứng dụng của nó trong lập trình c#

Trong bài viết này Stanford sẽ giúp các bạn học lập trình c# tìm hiểu về hàng đợi với lớp Queue trong lập trình C# cũng như các ứng dụng của Queue và cách sử dụng qua những ví dụ thực tế.

Trong C#, Queue<T> là một cấu trúc dữ liệu hàng đợi (FIFO – First In, First Out) nằm trong namespace System.Collections.Generic. Nó rất hữu ích khi bạn cần xử lý các phần tử theo thứ tự mà chúng được thêm vào, giống như một hàng đợi.

Đặc điểm của Queue<T> trong lập trình c#

  • Phần tử được thêm vào cuối hàng (enqueue).
  • Phần tử được lấy ra từ đầu hàng (dequeue).
  • Không hỗ trợ truy cập ngẫu nhiên như List<T>.


Các phương thức và thuộc tính quan trọng

  • Enqueue(T): Thêm phần tử vào cuối hàng
  • Dequeue(): Lấy và xóa phần tử ở đầu hàng
  • Peek(): Xem phần tử ở đầu hàng mà không xóa
  • Count: Trả về số phần tử trong hàng
  • Clear(): Xóa toàn bộ phần tử
  • Contains(T): Kiểm tra xem phần tử có tồn tại không
  • ToArray(): Chuyển hàng đợi thành mảng

Ví dụ:

using System;
using System.Collections.Generic;
 
class Program
{
    static void Main()
    {
        Queue<string> queue = new Queue<string>();
 
        // Thêm phần tử vào hàng đợi
        queue.Enqueue("Khách 1");
        queue.Enqueue("Khách 2");
        queue.Enqueue("Khách 3");
 
        Console.WriteLine("Danh sách hàng đợi:");
        foreach (var item in queue)
        {
            Console.WriteLine(item);
        }
 
        // Xem phần tử đầu tiên
        Console.WriteLine($"\nNgười tiếp theo: {queue.Peek()}");
 
        // Lấy phần tử ra khỏi hàng đợi
        Console.WriteLine($"\nPhục vụ: {queue.Dequeue()}");
 
        Console.WriteLine("\nHàng đợi sau khi phục vụ:");
        foreach (var item in queue)
        {
            Console.WriteLine(item);
        }
 
        // Kiểm tra phần tử
        Console.WriteLine($"\nCó 'Khách 2' trong hàng không? {queue.Contains("Khách 2")}");
    }
}
Sau khi chạy chương trình sẽ hiển thị kết quả như sau:

Danh sách hàng đợi:
Khách 1
Khách 2
Khách 3
 
Người tiếp theo: Khách 1
Phục vụ: Khách 1
Hàng đợi sau khi phục vụ:
Khách 2
Khách 3
Có 'Khách 2' trong hàng không? True

Ứng dụng thực tế của Queue

  • Hệ thống đặt hàng: xử lý đơn hàng theo thứ tự.
  • In ấn: hàng đợi lệnh in.
  • Truyền thông mạng: xử lý gói tin theo thứ tự.
  • Trò chơi: xử lý lượt chơi của người chơi.
  • Hệ thống đa nhiệm: quản lý tiến trình hoặc tác vụ.

Tiếp theo trong bài viết này chúng ta sẽ xây dựng một chương trình mô phỏng quầy giao dịch sử dụng Queue<T> trong C#. Ứng dụng này cho phép:
- Thêm khách hàng vào hàng đợi.
- Phục vụ khách hàng theo thứ tự.
- Hiển thị danh sách khách đang chờ.
- Kiểm tra số lượng khách còn lại.

Đoạn code bằng lập trình c# xử lý mô phỏng quầy giao dịch như sau:

using System;
using System.Collections.Generic;
 
class QuayGiaoDich
{
    static Queue<string> hangDoi = new Queue<string>();
 
    static void Main()
    {
        while (true)
        {
            Console.WriteLine("\n--- QUẦY GIAO DỊCH ---");
            Console.WriteLine("1. Thêm khách hàng");
            Console.WriteLine("2. Phục vụ khách hàng");
            Console.WriteLine("3. Xem danh sách khách đang chờ");
            Console.WriteLine("4. Số lượng khách còn lại");
            Console.WriteLine("5. Thoát");
            Console.Write("Chọn chức năng (1-5): ");
 
            string luaChon = Console.ReadLine();
            Console.Clear();
 
            switch (luaChon)
            {
                case "1":
                    ThemKhach();
                    break;
                case "2":
                    PhucVuKhach();
                    break;
                case "3":
                    HienThiHangDoi();
                    break;
                case "4":
                    Console.WriteLine($"Số lượng khách còn lại: {hangDoi.Count}");
                    break;
                case "5":
                    Console.WriteLine("Thoát chương trình.");
                    return;
                default:
                    Console.WriteLine("Lựa chọn không hợp lệ. Vui lòng chọn lại.");
                    break;
            }
        }
    }
 
    static void ThemKhach()
    {
        Console.Write("Nhập tên khách hàng: ");
        string ten = Console.ReadLine();
        hangDoi.Enqueue(ten);
        Console.WriteLine($"Đã thêm khách hàng: {ten}");
    }
 
    static void PhucVuKhach()
    {
        if (hangDoi.Count > 0)
        {
            string khach = hangDoi.Dequeue();
            Console.WriteLine($"Đang phục vụ: {khach}");
        }
        else
        {
            Console.WriteLine("Không có khách nào trong hàng đợi.");
        }
    }
 
    static void HienThiHangDoi()
    {
        if (hangDoi.Count == 0)
        {
            Console.WriteLine("Hàng đợi trống.");
            return;
        }
 
        Console.WriteLine("Danh sách khách đang chờ:");
        foreach (var khach in hangDoi)
        {
            Console.WriteLine($"- {khach}");
        }
    }
}

Hy vọng qua bài viết này Stanford đã giúp các bạn học lập trình c# hiểu hơn về hàng đợi trong lớp Queue<T> cũng như các ứng dụng của nó trong lập trình c#.

Bên cạnh tự học c#, bạn có một lựa chọn tốt để học c# bài bản dưới sự hướng dẫn của chuyên gia giàu kinh nghiệm Stanford bằng việc đăng ký tham gia ngay lớp học tại đây: http://bit.ly/2SLPYFF để chinh phục con đường trở thành lập trình viên c# chuyên nghiệp và nhận ưu đãi hấp dẫn. Hoặc bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được Stanford gọi lại tư vấn trực tiếp nhé.

==========🎬 🎬 🎬==========
☎️STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 - 0866 586 366
Website: https://stanford.com.vn
Facebook: http://bit.ly/2FN0TYb
Youtube: http://bit.ly/2TkKT7I
Trụ sở chính: Toà nhà iTech, Số 20 ngõ 678 đường Láng, Đống Đa, Hà Nội

Tags: tìm hiểu queue c#, ứng dụng queue c#