Thao tác cơ bản trên hàng đợi¶
Tóm lược nội dung
Bài này trình bày một số thao tác cơ bản trên hàng đợi thông qua việc mô phỏng tiến trình phục vụ tại ngân hàng.
Bài toán¶
Một ngân hàng cần xây dựng hệ thống quản lý tiến trình phục vụ khách hàng. Khi đến ngân hàng, khách hàng sẽ được mời ngồi ở hàng ghế chờ và chờ đến lượt được phục vụ.
Yêu cầu:
Viết chương trình mô phỏng tiến trình như trên bằng các thao tác:
- Thêm khách hàng vô hàng đợi.
- Lấy từng khách hàng ra khỏi hàng đợi để phục vụ.
Input:
Tên các khách hàng.
Output:
Tên từng khách hàng được phục vụ.
Viết chương trình¶
Bước 0:
Nạp lớp Queue của module queue.
Bước 1:
Khởi tạo hàng đợi q.
Bước 2:
Thêm phần tử vô hàng đợi.
Thêm phần tử
Để thêm phần tử vô vị trí cuối của hàng đợi, ta dùng phương thức put().
Các dòng lệnh từ 8 đến 14 lần lượt thêm từng chuỗi vô hàng đợi, mỗi chuỗi là tên một khách hàng.
Bước 3:
In hàng đợi ra màn hình.
In hàng đợi
Để in các phần tử trong hàng đợi ra màn hình, ta dùng hàm print() và toán tử giải nén * (unpack).
Dòng lệnh 18 giải nén/mở gói hàng đợi q.queue rồi gọi hàm print() để in ra màn hình.
- Tham số
sepdùng để thêm dấu phẩy', 'phân cách các phần tử khi in ra.
Bước 3b:
Chạy chương trình trên, kết quả như sau:
Hàng đợi hiện tại:
Elon Musk, Jeff Bezos, Mark Zuckerberg, Bernard Arnault, Larry Ellison, Jensen Huang, Andrej Karpathy
Bước 4:
Lấy phần tử ra khỏi hàng đợi.
Lấy phần tử ra
Để lấy phần tử nằm ở vị trí đầu ra khỏi hàng đợi, ta dùng phương thức get().
Bước 4b:
Chạy chương trình trên, kết quả như sau:
Đang phục vụ Elon Musk
Đang phục vụ Jeff Bezos
Đang phục vụ Mark Zuckerberg
Đang phục vụ Bernard Arnault
Đang phục vụ Larry Ellison
Đang phục vụ Jensen Huang
Đang phục vụ Andrej Karpathy
Lưu ý
Sau khi thực hiện xong các dòng lệnh get(), hàng đợi không còn phần tử nào.
Bước 4c:
Lấy phần tử ra khỏi hàng đợi bằng vòng lặp while.
Vì các dòng lệnh từ 21 đến 40 được thực hiện tương tự nhiều lần nên ta thay chúng bằng vòng lặp.
Vì không thể biết thao tác lấy phần tử ra được thực hiện bao nhiêu lần nên ta dùng vòng lặp while. Điều kiện của vòng lặp while là kiểm tra hàng đợi còn phần tử hay không. Khi nào còn phần tử thì còn thực hiện.
Kiểm tra hàng đợi rỗng
Để kiểm tra hàng đợi còn hay không còn phần tử, ta dùng phương thức empty().
empty()trả vềTruenghĩa là hàng đợi không còn phần tử nào.empty()trả vềFalsenghĩa là hàng đợi vẫn còn ít nhất một phần tử.
Thay các dòng lệnh từ 21 đến 40 bằng các dòng sau:
Bước 4d:
Chạy chương trình trên, kết quả vẫn như cũ.
Lưu ý
Sau khi thực hiện xong vòng lặp while, hàng đợi không còn phần tử nào.
Mã nguồn¶
Code đầy đủ được đặt tại: