BÀI GIẢNG: HÀNG ĐỢI pps

52 528 3
BÀI GIẢNG: HÀNG ĐỢI pps

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HÀNG ĐỢI QUEUE 2/52 3.5 CẤU TRÚC HÀNG ĐỢI  Khái niệm, đặc điểm  Lưu trữ kế tiếp của hàng đợi  Hàng đợi móc nối 3/52 3.5.1 Khái niệm, đặc điểm của hàng đợi Khái niệm  Hàng đợi là một danh sách tuyến tính.  Phép toán bổ sung một phần tử vào hàng đợi được thực hiện ở một đầu gọi là cuối hàng. Phép toán loại bỏ một phần tử khỏi hàng đợi được thực hiện ở đầu kia gọi là đầu hàng. 4/52 3.5.1 Khái niệm, đặc điểm của hàng đợi  Phần tử đưa vào hàng đợi trước sẽ được lấy ra xử lí trước, phần tử đưa vào hàng đợi sau sẽ được lấy ra xử lí sau.  Được gọi là danh sách FIFO (First - In - First – Out) 5/52 3.5.1 Khái niệm, đặc điểm của hàng đợi A B C D E F Đầu hàng Cuối hàng Loại bỏ Bổ sung Hình vẽ biểu diễn hàng đợi 6/52 3.5.2 Lưu trữ kế tiếp của hàng đợi  Định nghĩa và khai báo cấu trúc dữ liệu  Định nghĩa các phép toán và chương trình thực hiện các phép toán cơ bản 7/52 Định nghĩa và khai báo cấu trúc dữ liệu  Hàng đợi được biểu diễn là một bản ghi gồm có 3 trường :  Trường thứ nhất : là mảng một chiều có kích thước đủ lớn để lưu các phần tử của hàng đợi  Trường thứ hai và thứ ba là số nguyên để lưu chỉ số của phần tử đầu hàng đợi và chỉ số của phần tử cuối hàng đợi trong mảng các phần tử 8/52 Định nghĩa và khai báo cấu trúc dữ liệu  Khai báo cấu trúc : const max = <1 số thích hợp>; struct queue { <kiểu phần tử> ptu[max] ; int front, rear ; } q ; 9/52 Định nghĩa và khai báo cấu trúc dữ liệu A B C D E F 0 1 2 3 4 5 6 7 8 max=10 front = 2 rear = 7 q Mảng lưu trữ hàng đợi 10/52 Các phép toán cơ bản  Khởi tạo hàng đợi rỗng : creat(q)  Kiểm tra hàng đợi rỗng : empty(q)  Kiểm tra hàng đợi đầy : full(q)  Chèn phần tử x vào cuối hàng đợi : add(x,q)  Loại phần tử đầu hàng đợi gán cho x : del(q,x) [...]... Mảng lưu trữ hàng đợi 25/52 max=10 Các phép toán cơ bản  Khởi tạo hàng đợi rỗng : creat(q)  Kiểm tra hàng đợi rỗng : empty(q)  Kiểm tra hàng đợi đầy : full(q)  Chèn phần tử x vào cuối hàng đợi : add(x,q)  Loại phần tử đầu hàng đợi gán cho x : del(q,x) 26/52 Các phép toán cơ bản  Khởi tạo hàng đợi rỗng void creat(queue &q) { q.rear = -1; } 27/52 Các phép toán cơ bản  Kiểm tra hàng đợi rỗng int... không gian nhớ của hàng đợi Hàng đợi đầy khi số phần tử có trong hàng đợi là max  Phép toán loại phần tử đầu hàng đợi gán cho x có độ phức tạp là O(n) 32/52 Hàng đợi mảng vòng  Coi không gian nhớ dành cho hàng đợi là mảng vòng  Hàng đợi mảng vòng được biểu diễn là một bản ghi gồm có 3 trường :  Trường thứ nhất : là mảng một chiều có kích thước đủ lớn để lưu các phần tử của hàng đợi  Trường thứ hai... hàng đợi gán cho x void del(queue &q , &x) { if (!empty(q)) x= q.ptu[q.front++]; } 21/52 Nhận xét  Chưa tận dụng được không gian nhớ rỗi của hàng đợi  Hàng đợi đầy nhưng có thể trong hàng đợi không có phần tử 22/52 Hàng đợi cải tiến  Hàng đợi cải tiến được biểu diễn là một bản ghi gồm có 2 trường :  Trường thứ nhất : là mảng một chiều có kích thước đủ lớn để lưu các phần tử của hàng. .. tạo hàng đợi rỗng void creat(queue &q) { q.front = 0; q.rear = -1; } 11/52 Các phép toán cơ bản max=10 0 1 2 3 4 5 6 7 8 q front = 0 rear = -1 Biểu diễn hàng đợi rỗng 12/52 9 Các phép toán cơ bản  Kiểm tra hàng đợi rỗng int empty(queue q) { return q.front > q.rear ; } 13/52 Các phép toán cơ bản  Kiểm tra hàng đợi đầy max=10 0 q 1 2 3 4 5 6 7 8 9 A B C D E F G H front = 2 rear = 9 Biểu diễn hàng đợi. .. phép toán cơ bản Kiểm tra hàng đợi đầy int full(queue q) { return q.rear == max-1 ; } 15/52 Các phép toán cơ bản Chèn phần tử x vào cuối hàng đợi  max=10 0 q 1 2 3 4 5 6 7 A B C D E F front = 2 8 rear = 7 Mảng lưu trữ hàng đợi 16/52 9 X Các phép toán cơ bản Chèn phần tử x vào cuối hàng đợi  10 = Max 0 q 1 2 3 4 5 6 7 8 A B C D E F X front = 2 9 rear = 8 Mảng lưu trữ hàng đợi 17/52 Các phép toán cơ... x vào cuối hàng đợi void add( x, queue &q) { if (!full(q)) q.ptu[++q.rear]=x; } 18/52 Các phép toán cơ bản Loại phần tử ở đầu hàng đợi gán cho x  max=10 0 q x 1 2 3 4 5 6 7 A B C D E F front = 2 8 rear = 7 Mảng lưu trữ hàng đợi 19/52 9 Các phép toán cơ bản Loại phần tử ở đầu hàng đợi gán cho x  max=10 0 q A x 1 2 3 4 5 6 7 B C D E F front = 3 8 rear = 7 Mảng lưu trữ hàng đợi 20/52 9... phần tử đầu hàng đợi và chỉ số phần tử cuối hàng đợi trong mảng các phần tử 33/52 Định nghĩa và khai báo cấu trúc dữ liệu  Khai báo cấu trúc : const max = ; struct queue { ptu[max] ; int front, rear ; }q; 34/52 Định nghĩa và khai báo cấu trúc dữ liệu Hàng đợi mảng vòng 5 4 D 6 E rear = 6 … C 3 2 front =2 B A max -1 1 0 35/52 Các phép toán cơ bản  Khởi tạo hàng đợi rỗng... đợi mảng vòng 5 4 D 6 E rear = 6 … C 3 2 front =2 B A max -1 1 0 35/52 Các phép toán cơ bản  Khởi tạo hàng đợi rỗng : creat(q)  Kiểm tra hàng đợi rỗng : empty(q)  Kiểm tra hàng đợi đầy : full(q)  Chèn phần tử x vào cuối hàng đợi : add(x,q)  Loại phần tử đầu hàng đợi gán cho x : del(q,x) 36/52 ... int empty(queue q) { return q.rear . HÀNG ĐỢI QUEUE 2/52 3.5 CẤU TRÚC HÀNG ĐỢI  Khái niệm, đặc điểm  Lưu trữ kế tiếp của hàng đợi  Hàng đợi móc nối 3/52 3.5.1 Khái niệm, đặc điểm của hàng đợi Khái niệm  Hàng đợi là. 7 q Mảng lưu trữ hàng đợi 10/52 Các phép toán cơ bản  Khởi tạo hàng đợi rỗng : creat(q)  Kiểm tra hàng đợi rỗng : empty(q)  Kiểm tra hàng đợi đầy : full(q)  Chèn phần tử x vào cuối hàng đợi : add(x,q)  Loại. Out) 5/52 3.5.1 Khái niệm, đặc điểm của hàng đợi A B C D E F Đầu hàng Cuối hàng Loại bỏ Bổ sung Hình vẽ biểu diễn hàng đợi 6/52 3.5.2 Lưu trữ kế tiếp của hàng đợi  Định nghĩa và khai báo cấu trúc

Ngày đăng: 12/07/2014, 14:20

Mục lục

  • HÀNG ĐỢI

  • 3.5 CẤU TRÚC HÀNG ĐỢI

  • 3.5.1 Khái niệm, đặc điểm của hàng đợi

  • Slide 4

  • Slide 5

  • 3.5.2 Lưu trữ kế tiếp của hàng đợi

  • Định nghĩa và khai báo cấu trúc dữ liệu

  • Slide 8

  • Slide 9

  • Các phép toán cơ bản

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan