Bài giảng Cấu trúc hàng đợi (Queue)
Số trang: 15
Loại file: pdf
Dung lượng: 263.29 KB
Lượt xem: 5
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Cấu trúc hàng đợi - Queue" giới thiệu đến các bạn những nội dung về khái niệm hàng đợi, phép toán trên hàng đợi, cài đặt hàng đợi bằng mảng, cài đặt hàng đợi bằng dữ liệu liên kết,.. Với các bạn đang học chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích cho các bạn.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc hàng đợi (Queue)CẤU TRÚC HÀNG ĐỢI (QUEUE)Bộ môn Công nghệ phần mềmKhoa Công nghệ thông tin & Truyền thôngĐại học Cần ThơKHÁI NIỆM HÀNG ĐỢI Là một dạng danh sách ñặc biệt mà việc thêm phần tử chỉ thực hiện tại một ñầu, gọi là cuối hàng; việc loại bỏ phần tử thực hiện ở ñầu kia, gọi là ñầu hàng. Làm việc theo nguyên tắc FIFO(First In First Out).PHÉP TOÁN TRÊN HÀNG ĐỢI MAKENULL_QUEUE(Q): khởi tạo hàng ñợi rỗng. EMPTY_QUEUE(Q): kiểm tra hàng ñợi rỗng. FULL_QUEUE(Q): kiểm tra hàng ñợi ñầy. FRONT(Q): nội dung phần tử ñầu hàng. ENQUEUE(X,Q): thêm phần tử X vào cuối hàng ñợi Q. DEQUEUE(Q): xóa phần tử ở ñầu hàng ñợi.CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG front rear Mô hình lưu trữ: Khai báo: 0 1 2 3 …. maxlength-1 #define . . . MaxLength typedef ... ElementType; typedef struct{ ElementType Elements[MaxLength]; int front, rear; } Queue; Queue Q; CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Hàng ñầy: front rear 0 1 2 3 …. maxlength-1 Hàng tràn: front rear 0 1 2 3 …. maxlength-1 Sử dụng bộ nhớ không hiệu quả. Phải xử lý hàng tràn.CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Xử lý hàng tràn bằng mảng tịnh tiến: rear front 0 1 2 … maxlength-1 front rear Xử lý hàng tràn bằng mảng vòng:CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Khởi tạo hàng rỗng void MakeNull_Queue(Queue *Q){ Q->Front = -1; Q->Rear = -1; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Kiểm tra hàng rỗng int Empty_Queue(Queue Q){ return Q.Front == -1; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Kiểm tra hàng ñầy int Full_Queue(Queue Q){ return (Q.Rear-Q.Front+1) % MaxLength == 0; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Nội dung phần tử ñầu hàng: ElementType Front(Queue Q){ if (Empty_Queue (Q)) printf(“Loi ! Hang doi rong”); else return Q.Element[Q.Front]; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Xóa phần tử ñầu hàng:CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Xóa phần tử ñầu hàng: void DeQueue(Queue *Q){ if (Empty_Queue(*Q)) printf(Loi: Hang rong!); else if (Q->Front == Q->Rear) MakeNull_Queue(Q); else Q->Front=(Q->Front+1) % MaxLength; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Thêm phần tử vào cuối hàng:CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Thêm phần tử vào cuối hàng: void EnQueue(ElementType X,Queue *Q){ if (Full_Queue(*Q)) printf(Loi: Hang day!); else{ if (Empty_Queue(*Q)) Q->Front = 0; Q->Rear = (Q->Rear+1) % MaxLength; Q->Elements[Q->Rear] = X; } }CÀI ĐẶT HÀNG ĐỢI BẰNG DSLK front rear
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc hàng đợi (Queue)CẤU TRÚC HÀNG ĐỢI (QUEUE)Bộ môn Công nghệ phần mềmKhoa Công nghệ thông tin & Truyền thôngĐại học Cần ThơKHÁI NIỆM HÀNG ĐỢI Là một dạng danh sách ñặc biệt mà việc thêm phần tử chỉ thực hiện tại một ñầu, gọi là cuối hàng; việc loại bỏ phần tử thực hiện ở ñầu kia, gọi là ñầu hàng. Làm việc theo nguyên tắc FIFO(First In First Out).PHÉP TOÁN TRÊN HÀNG ĐỢI MAKENULL_QUEUE(Q): khởi tạo hàng ñợi rỗng. EMPTY_QUEUE(Q): kiểm tra hàng ñợi rỗng. FULL_QUEUE(Q): kiểm tra hàng ñợi ñầy. FRONT(Q): nội dung phần tử ñầu hàng. ENQUEUE(X,Q): thêm phần tử X vào cuối hàng ñợi Q. DEQUEUE(Q): xóa phần tử ở ñầu hàng ñợi.CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG front rear Mô hình lưu trữ: Khai báo: 0 1 2 3 …. maxlength-1 #define . . . MaxLength typedef ... ElementType; typedef struct{ ElementType Elements[MaxLength]; int front, rear; } Queue; Queue Q; CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Hàng ñầy: front rear 0 1 2 3 …. maxlength-1 Hàng tràn: front rear 0 1 2 3 …. maxlength-1 Sử dụng bộ nhớ không hiệu quả. Phải xử lý hàng tràn.CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Xử lý hàng tràn bằng mảng tịnh tiến: rear front 0 1 2 … maxlength-1 front rear Xử lý hàng tràn bằng mảng vòng:CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Khởi tạo hàng rỗng void MakeNull_Queue(Queue *Q){ Q->Front = -1; Q->Rear = -1; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Kiểm tra hàng rỗng int Empty_Queue(Queue Q){ return Q.Front == -1; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Kiểm tra hàng ñầy int Full_Queue(Queue Q){ return (Q.Rear-Q.Front+1) % MaxLength == 0; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Nội dung phần tử ñầu hàng: ElementType Front(Queue Q){ if (Empty_Queue (Q)) printf(“Loi ! Hang doi rong”); else return Q.Element[Q.Front]; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Xóa phần tử ñầu hàng:CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Xóa phần tử ñầu hàng: void DeQueue(Queue *Q){ if (Empty_Queue(*Q)) printf(Loi: Hang rong!); else if (Q->Front == Q->Rear) MakeNull_Queue(Q); else Q->Front=(Q->Front+1) % MaxLength; }CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Thêm phần tử vào cuối hàng:CÀI ĐẶT HÀNG ĐỢI BẰNG MẢNG Thêm phần tử vào cuối hàng: void EnQueue(ElementType X,Queue *Q){ if (Full_Queue(*Q)) printf(Loi: Hang day!); else{ if (Empty_Queue(*Q)) Q->Front = 0; Q->Rear = (Q->Rear+1) % MaxLength; Q->Elements[Q->Rear] = X; } }CÀI ĐẶT HÀNG ĐỢI BẰNG DSLK front rear
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc hàng đợi Cấu trúc hàng đợi Khái niệm hàng đợi Phép toán trên hàng đợi Cài đặt hàng đợi bằng mảngTài liệu có liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 360 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 187 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 175 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 149 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 146 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 144 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 110 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 104 0 0 -
49 trang 87 0 0
-
Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hoàng Mạnh Hà
67 trang 74 0 0