Kiến trúc máy tính - Bài 9

Cấu trúc dữ liệu hàng đợi .Danh sách kiểu Hàng đợi (Queue) là cách tổ chức lưu trữ các đối tượng dưới dạng một danh sách tuyến tính mà việc bổ sung đối tượng được thực hiện ở | Bài 9. Cấu trúc dữ liệu hàng đợi Danh sách kiểu Hàng đợi (Queue) Queue là cách tổ chức lưu trữ các đối tượng dưới dạng một danh sách tuyến tính mà việc bổ sung đối tượng được thực hiện ở đầu danh sách và việc lấy đối tượng ra được thực hiện ở cuối của danh sách. Queue còn được gọi là danh sách kiểu FIFO (First In First Out - vào trước ra trước) Cấu trúc dữ liệu trừu tượng Queue (The queue ADT) Queue ADT lưu trữ các đối tượng bất kỳ Thêm vào và xóa đi (lấy ra) theo kiểu FIFO Thêm vào thực hiện ở cuối của queue và lấy ra thực hiện ở đầu queue Các phép toán chính thực hiện trên queue: - enqueue(Object o): bổ sung một phần tử o vào cuối của queue. - dequeue(Object &o): Xóa đi phần tử đầu của queue Các phép toán bổ trợ - front(): trả lại phần tử đầu của queue nhưng không xóa nó đi size(): trả lại số phần tử hiện đang được lưu trữ trong queue isEmpty(): trả lại giá trị kiểu boolen để xác định có phần tử được lưu trữ trong queue không? Ngoại lệ: thực hiện dequeue hoặc enqueue trong khi . | Bài 9. Cấu trúc dữ liệu hàng đợi Danh sách kiểu Hàng đợi (Queue) Queue là cách tổ chức lưu trữ các đối tượng dưới dạng một danh sách tuyến tính mà việc bổ sung đối tượng được thực hiện ở đầu danh sách và việc lấy đối tượng ra được thực hiện ở cuối của danh sách. Queue còn được gọi là danh sách kiểu FIFO (First In First Out - vào trước ra trước) Cấu trúc dữ liệu trừu tượng Queue (The queue ADT) Queue ADT lưu trữ các đối tượng bất kỳ Thêm vào và xóa đi (lấy ra) theo kiểu FIFO Thêm vào thực hiện ở cuối của queue và lấy ra thực hiện ở đầu queue Các phép toán chính thực hiện trên queue: - enqueue(Object o): bổ sung một phần tử o vào cuối của queue. - dequeue(Object &o): Xóa đi phần tử đầu của queue Các phép toán bổ trợ - front(): trả lại phần tử đầu của queue nhưng không xóa nó đi size(): trả lại số phần tử hiện đang được lưu trữ trong queue isEmpty(): trả lại giá trị kiểu boolen để xác định có phần tử được lưu trữ trong queue không? Ngoại lệ: thực hiện dequeue hoặc enqueue trong khi queue rỗng, khi đó ta cần phải chuyển nó đến ngoại lệ Một số ứng dụng của queue Các ứng dụng trực tiếp - Danh sách hàng đợi - Truy nhập các nguồn dùng chung(ví dụ máy in trong mạng cục bộ) - Đa lập trình Các ứng dụng không trực tiếp - Cấu trúc dữ liệu hỗ trợ cho các thuật toán - Làm thành phần của các cấu trúc dữ liệu khác Cài đặt queue bằng mảng Sử dụng một mảng kiểu vòng có kích thước N Sử dụng 2 biến lưu trữ chỉ số của phần tử trước và phần tử sau: f lưu chỉ số phần tử trước r lưu trữ chỉ số phần tử chuẩn bị được đưa vào Vị trí r của mảng là rỗng Cấu hình bình thường Cấu hình vòng lại Các phép toán trên queue Chúng ta sử dụng phép toán modulo để xác định số phần tử còn lại của queue Các phép toán trên queue(tiếp) Phép toán ensqueue dẫn đến ngoại lệ khi mảng đầy Algorthim enqueue(Object o) if size()=N-1 then return 0 else Q[r]←o r←(r+1) mod N return 1; Các phép toán trên queue(tiếp) Phép toán dequeue dẫn đến ngoại lệ khi mảng rỗng Algorthim dequeue(Object &o) if isEmpty() then return 0 .

Không thể tạo bản xem trước, hãy bấm tải xuống
TÀI LIỆU MỚI ĐĂNG
128    79    2    16-05-2024
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.