JavaScript is required

Một quán cà phê có nhu cầu quản lý các bàn. Gồm các thông tin sau:

- Mã bàn.

- Trạng thái (trống/có khách sử dụng đồ uống).

- Tên đồ uống.

- Số lượng mỗi loại đồ uống có trên bàn.

- Đơn giá mỗi loại đồ uống.

- Thành tiền mỗi bàn.

- Phương thức thanh toán.

Sử dụng cấu trúc dữ liệu cây nhị phân tìm kiếm (BST), viết chương trình cho phép thực hiện các thao tác sau:

a. Nhập danh sách thông tin các bàn từ bàn phím.

b. Xuất danh sách thông tin các bàn ra màn hình.

c. Đếm số lượng bàn có khách.

d. Tìm kiếm một bàn theo mã và trả về thông tin đầy đủ.

e. Xuất thông tin ra màn hình các bàn ở trạng thái có khách.

f. Xóa tất cả các thông tin bàn ở trạng thái trống và đã thanh toán tiền.

Trả lời:

Đáp án đúng:


Câu hỏi yêu cầu thiết kế và triển khai một chương trình quản lý thông tin bàn của quán cà phê sử dụng cấu trúc dữ liệu cây nhị phân tìm kiếm (BST). Các yêu cầu bao gồm nhập, xuất, đếm bàn có khách, tìm kiếm bàn theo mã, xuất bàn có khách và xóa bàn trống đã thanh toán. Việc sử dụng BST giúp tối ưu hóa các thao tác tìm kiếm và xóa, đặc biệt khi số lượng bàn lớn. Việc triển khai cần định nghĩa cấu trúc dữ liệu cho bàn, xây dựng các hàm tương ứng cho từng thao tác theo yêu cầu của BST và logic nghiệp vụ của quán cà phê. Cụ thể: a. **Nhập danh sách thông tin các bàn:** Người dùng sẽ nhập thông tin cho từng bàn (Mã bàn, Trạng thái, Tên đồ uống, Số lượng, Đơn giá, Phương thức thanh toán). Mã bàn sẽ được sử dụng làm khóa để chèn vào BST. Trong quá trình chèn, cần cập nhật thông tin về thành tiền dựa trên số lượng và đơn giá. b. **Xuất danh sách thông tin các bàn:** Duyệt cây BST theo thứ tự inorder (hoặc preorder/postorder tùy mục đích trình bày) để in ra thông tin của tất cả các bàn. c. **Đếm số lượng bàn có khách:** Duyệt qua tất cả các nút trong cây BST. Tại mỗi nút, kiểm tra trạng thái của bàn. Nếu trạng thái là 'có khách sử dụng đồ uống', tăng biến đếm. d. **Tìm kiếm một bàn theo mã và trả về thông tin đầy đủ:** Sử dụng thuật toán tìm kiếm trong BST. Bắt đầu từ gốc cây, so sánh mã bàn cần tìm với mã bàn tại nút hiện tại. Nếu bằng nhau, trả về thông tin bàn đó. Nếu nhỏ hơn, sang cây con trái. Nếu lớn hơn, sang cây con phải. Nếu hết cây mà không tìm thấy, thông báo không tìm thấy. e. **Xuất thông tin ra màn hình các bàn ở trạng thái có khách:** Tương tự như đếm bàn có khách, nhưng thay vì đếm, chúng ta sẽ in thông tin chi tiết của bàn đó ra màn hình khi trạng thái là 'có khách sử dụng đồ uống'. Việc này đòi hỏi một phép duyệt cây. f. **Xóa tất cả các thông tin bàn ở trạng thái trống và đã thanh toán tiền:** Đây là thao tác phức tạp nhất. Cần duyệt cây để xác định các bàn thỏa mãn điều kiện xóa (trạng thái trống VÀ đã thanh toán tiền). Sau đó, thực hiện phép xóa nút trong BST cho từng bàn đó. Lưu ý rằng việc xóa nhiều nút trong BST có thể làm mất cân bằng cây, tuy nhiên, bài toán không yêu cầu duy trì cân bằng cây (ví dụ: AVL, Red-Black Tree). Do đây là một bài toán lập trình yêu cầu triển khai cụ thể bằng mã nguồn, nên không có một đáp án trắc nghiệm duy nhất mà là một giải pháp lập trình hoàn chỉnh. Tuy nhiên, nếu câu hỏi được diễn đạt theo hướng lựa chọn phương án triển khai, thì đáp án đúng sẽ là phương án mô tả chính xác việc sử dụng BST và logic xử lý các yêu cầu trên.

Đề thi kết thúc học phần môn Cấu trúc dữ liệu và giải thuật, bao gồm các câu hỏi về thuật toán sắp xếp Shell sort, cây AVL, hàm băm với các phương pháp giải quyết đụng độ, và ứng dụng cây nhị phân tìm kiếm (BST) để quản lý thông tin bàn trong một quán cà phê.


4 câu hỏi 90 phút

Câu hỏi liên quan