Câu hỏi:

28/09/2024 102 Lưu

Tạo tệp queue py chứa các hàm enqueue(), dequeue(), front(), rear(), isEmptyQueue() của hàng đợi. Sau đó:

- Khởi tạo hàng đọi rồng han trởi sáng tạo

- Thực hiện các hàm enqueue() với giá trị thích hợp để hàng đợi có kết quả như Hình 6a.

- Thực hiện các hàm enqueue(), dequeue() với các giá trị thích hợp để hàng đợi có kết quả như Hình 6b.

Media VietJack

Quảng cáo

Trả lời:

verified Giải bởi Vietjack

1. Tạo tệp queue py chứa các hàm enqueue(), dequeue(), front(), rear(), isEmptyQueue() của hàng đợi.

# queue.py

 

class Queue:

    def __init__(self):

       self.items = []

 

    def isEmptyQueue(self):

        return self.items == []

 

    def enqueue(self, item):

       self.items.append(item)

 

    def dequeue(self):

        if not self.isEmptyQueue():

           return self.items.pop(0)

        else:

           raise Exception("Queue is empty")

 

    def front(self):

        if not self.isEmptyQueue():

           return self.items[0]

        else:

           raise Exception("Queue is empty")

 

    def rear(self):

        if not self.isEmptyQueue():

           return self.items[-1]

        else:

           raise Exception("Queue is empty")

2. Khởi tạo hàng đợi rỗng.

- Khởi tạo hàng đợi rỗng.

3. Thực hiện các hàm enqueue() với giá trị thích hợp để hàng đợi có kết quả như Hình 6a.

- Thực hiện các hàm enqueue() để thêm các giá trị thích hợp.

4. Thực hiện các hàm enqueue(), dequeue() với các giá trị thích hợp để hàng đợi có kết quả như Hình 6b.

- Tiếp tục sử dụng các hàm enqueue() và dequeue() để thêm và lấy ra các giá trị thích hợp.

Code như sâu:

# Sử dụng tệp queue.py để thực hiện yêu cầu

from queue import Queue

# Khởi tạo hàng đợi

q = Queue()

# Thực hiện các hàm enqueue để có kết quả như Hình 6a

q.enqueue(30)

q.enqueue(20)

q.enqueue(10)

q.enqueue(50)

q.enqueue(40)

q.enqueue(60)

 print("Hình 6a:")

print("|", end=" ")

for i in range(6):

   print(q.items[i], end=" | ")

print()

# Thực hiện thêm và lấy ra các phần tử để có kết quả như Hình 6b

q.enqueue(0)

q.enqueue(80)

q.enqueue(70)

q.dequeue()

q.dequeue()

q.enqueue(90)

q.enqueue(100)

print("Hình 6b:")

print("|", end=" ")

for item in q.items:

    print(item, end=" | ")

print()

Kết quả khi chạy mã trên sẽ là:

Hình 6a:

| 30 | 20 | 10 | 50 | 40 | 60 | 

Hình 6b:

| 10 | 50 | 40 | 60 | 0 | 80 | 70 | 30 | 90 | 100 | 

Trong đó: Hàng đợi ban đầu (Hình 6a) được thêm từng phần tử theo thứ tự. Hàng đợi sau khi thực hiện các phép enqueue và dequeue (Hình 6b) đạt được kết quả yêu cầu.

 

 Media VietJack

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Lời giải

Trong Python, khi sử dụng kiểu list để biểu diễn hàng đợi.

a) Chỉ số của phần tử đầu: Chỉ số của phần tử đầu tiên luôn là 0

b) Chỉ số của phần tử cuối: Chỉ số của phần tử cuối cùng là len(queue) - 1

Lời giải

Có ba phương pháp sau đều giúp kiểm tra hàng đợi có rỗng hay không mà không cần sử dụng hàm len(queue). Tuy nhiên, phương pháp sử dụng boolean (not queue) là ngắn gọn và dễ hiểu nhất.

a). Sử dụng phép kiểm tra boolean: Danh sách rỗng trong Python sẽ trả về giá trị boolean là False, trong khi danh sách không rỗng sẽ trả về True. Do đó, bạn có thể kiểm tra hàng đợi bằng cách sử dụng điều kiện not.

if not queue:

   print("Hàng đợi rỗng")

else:

   print("Hàng đợi không rỗng")

b). So sánh trực tiếp với danh sách rỗng: có thể so sánh trực tiếp hàng đợi với danh sách rỗng []. Nếu chúng bằng nhau, nghĩa là hàng đợi đang rỗng.

if queue == []:

   print("Hàng đợi rỗng")

else:

   print("Hàng đợi không rỗng")

c). Sử dụng try-except để kiểm tra việc lấy phần tử đầu tiên: có thể thử lấy phần tử đầu tiên của hàng đợi bằng queue[0] và bắt lỗi nếu hàng đợi rỗng.

try:

   first_element = queue[0]

   print("Hàng đợi không rỗng")

except IndexError:

   print("Hàng đợi rỗng")

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP