Computer >> Máy Tính >  >> Lập trình >> Lập trình

Hàng đợi ưu tiên kép

Sự tồn tại của các phương pháp chung để đạt được cấu trúc dữ liệu DEPQ (Hàng đợi ưu tiên kết thúc kép) hiệu quả từ cấu trúc dữ liệu hàng đợi ưu tiên một đầu (PQ) cũng cung cấp triển khai hiệu quả hoạt động loại bỏ (bNode) (hoạt động này loại bỏ nút bNode khỏi PQ). Phương pháp đơn giản nhất trong số các phương pháp này, phương pháp cấu trúc kép, duy trì cả PQ tối thiểu và PQ tối đa của tất cả các phần tử DEPQ được liên kết với các con trỏ tương ứng giữa các nút của PQ tối thiểu và PQ tối đa chứa cùng một phần tử.

Hình D hiển thị cấu trúc đống kép cho các phần tử 7, 8, 3, 6, 5. Con trỏ tương ứng được hiển thị dưới dạng mũi tên màu đỏ.

Hàng đợi ưu tiên kép

Hình D:Khối kép

Mặc dù hình vẽ hiển thị từng phần tử được lưu trữ trong cả heap tối thiểu và tối đa, nó được yêu cầu lưu trữ từng phần tử chỉ trong một trong hai heap.

Các phép toán isEmpty và size được áp dụng bằng cách triển khai một kích thước thay đổi để theo dõi số lượng phần tử trong DEPQ. Phần tử tối thiểu nằm ở gốc của đống tối thiểu và phần tử tối đa nằm ở gốc của đống tối đa. Để chèn một phần tử B, chúng tôi chèn B vào cả đống tối thiểu và tối đa, sau đó thiết lập các con trỏ tương ứng giữa các vị trí của B trong đống tối thiểu và tối đa. Để loại bỏ phần tử tối thiểu, chúng tôi thực hiện removeMin từ min heap và remove (bNode), trong đó bNode là nút tương ứng cho phần tử bị loại bỏ, khỏi đống tối đa. Phần tử tối đa bị loại bỏ theo cách tương tự.