CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - HÀNG ĐỢI
lượt xem 9
download
Hàng đợi là một danh sách tuyến tính, trong đó: Việc 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 Việc loại bỏ một phần tử ra khỏi hàng đợi được thực hiện ở đầu kia gọi là đầu hàng. Danh sách kiểu hàng đợi còn gọi là danh sách FIFO – First In First Out.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CÂU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - HÀNG ĐỢI
- HÀNG ĐỢI QUEUE
- KHÁI NIỆM đợi là một danh sách tuyến tính, Hàng trong đó: Việc 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 Việc loại bỏ một phần tử ra khỏi hàng đợi được thực hiện ở đầu kia gọi là đầu hàng. Danh sách kiểu hàng đợi còn gọi là danh sách FIFO – First In First Out.
- KHÁI NIỆM ABCDEF Bổ sung Loại bỏ Đầu hàng Cuối hàng Hình vẽ biểu diễn hàng đợi
- BIỂU DIỄN CẤU TRÚC DỮ LIỆU Giả sử các phần tử của HĐ có kiểu dữ liệu là Item, độ dài của HĐ là N HĐ được lưu trong BNMT bởi mảng 1 chiều (lưu trữ kế tiếp). Mỗi phần tử của mảng lưu một phần tử của hàng đợi Hàng đợi được biểu diễn là một cấu trúc có 3 thành phần: Thành phần thứ nhất là mảng E lưu các phần tử của HĐ Thành phần thứ hai là biến front lưu chỉ số của phần tử đầu hàng Thành phần thứ ba là biến rear lưu chỉ số của phần tử cuối hàng Cấu trúc dữ liệu như sau:
- BIỂU DIỄN CẤU TRÚC DỮ LIỆU 0 1 2 3 4 5 6 7 8 9 = Max-1 A B C D E F E front = 2 rear = 7 Mảng lưu trữ hàng đợi
- BIỂU DIỄN CẤU TRÚC DỮ LIỆU #define Max N //Định nghĩa kiểu Item struct Queue{ int front, rear; Item E[Max]; }; Queue Q; /* Q.rear = -1 -> hàng đợi rỗng, Q.rear = Max-1 -> Hàng đợi đầy */
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 1. Khởi tạo hàng đợi rỗng void Initialize (Queue &Q) { Q.front = 0; Q.rear = -1; } 2. Kiểm tra hàng đợi rỗng int Empty (Queue Q) { return (Q.rear == -1); }
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI Max=10 0 1 2 3 4 5 6 7 8 9 E front = 0 rear = -1 Biểu diễn hàng đợi rỗng
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 3. Kiểm tra hàng đợi đầy int Full (Queue Q) { reurn (Q.rear == Max-1); } 10 = Max 0 1 2 3 4 5 6 7 8 9 A B C D E F G H E front = 2 rear = 9 Biểu diễn hàng đợi đầy
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 4. Bổ sung một phần tử vào cuối hàng đợi 10 = Max 0 1 2 3 4 5 6 7 8 9 A B C D E F E X G front = 2 rear = 7 Mảng lưu trữ hàng đợi
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 4. Bổ sung một phần tử vào cuối hàng đợi 10 = Max 0 1 2 3 4 5 6 7 8 9 A B C D E F E X G front = 2 rear = 8 Mảng lưu trữ hàng đợi
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 4. Bổ sung một phần tử vào cuối hàng đợi 10 = Max 0 1 2 3 4 5 6 7 8 9 A B C D E F G E front = 2 rear = 8 Mảng lưu trữ hàng đợi
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 4. Bổ sung một phần tử vào cuối hàng đợi int AddQ(Queue &Q, Item X) { If (Full(Q)) return 0; else { Q.rear++; Q.E[Q.rear] = X; return 1; } } Hàm AddQ thực hiện bổ sung một phần tử vào cuối hàng, hàm trả về 1 nếu bổ sung thành công, ngược lại hàm trả về 0
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 5. Lấy ra một phần tử ở đầu hàng đợi Trường hợp hàng đợi có nhiều hơn 1 phần tử 10 = Max 0 1 2 3 4 5 6 7 8 9 A B C D E F E X front = 2 rear = 7 Mảng lưu trữ hàng đợi
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 5. Lấy ra một phần tử ở đầu hàng đợi Trường hợp hàng đợi có nhiều hơn một phần tử 10 = Max 0 1 2 3 4 5 6 7 8 9 B C D E F E X A front = 3 rear = 7 Mảng lưu trữ hàng đợi
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 5. Lấy ra một phần tử ở đầu hàng đợi Trường hợp hàng đợi có 1 phần tử 10 = Max 0 1 2 3 4 5 6 7 8 9 B E rear = 3 X front = 3 Mảng lưu trữ hàng đợi
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 5. Lấy ra một phần tử ở đầu hàng đợi Trường hợp hàng đợi có 1 phần tử 10 = Max 0 1 2 3 4 5 6 7 8 9 E B front = 0 rear = -1 X Hàng đợi rỗng
- CÁC PHÉP TOÁN TRÊN HÀNG ĐỢI 5. Lấy ra một phần tử ở đầu hàng đợi int DeleteQ(Queue &Q, Item &X) { if (Empty(Q)) return 0; else { X = Q.E[Q.front]; if (Q.front == Q.rear) Initialize(Q); else Q.front = Q.front + 1; return 1; } } Hàm DeleteQ thực hiện lấy ra một phần tử ở đầu hàng, hàm trả về 1 nếu lấy ra thành công, ngược lại hàm trả về 0
- ỨNG DỤNG Viết chương trình: Nhập một chuỗi ký tự, sử dụng hàng đợi, việc nhập kết thúc khi gõ Enter In chuỗi ra màn hình Đếm các nguyên âm trong chuỗi
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình cấu trúc dữ liệu và giải thuât part 1
16 p | 825 | 365
-
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 p | 551 | 286
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 79 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Các khái niệm cơ bản về Cấu trúc dữ liệu và giải thuật
20 p | 44 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Giáo trình Cấu trúc dữ liệu và giải thuật - CĐ Nghề Đắk Lắk
60 p | 45 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Công nghệ thông tin - Trung cấp) - Trường Trung cấp Công nghệ và Du lịch Hà Nội
59 p | 14 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Chương 1: Tổng quan về giải thuật và cấu trúc dữ liệu
10 p | 66 | 4
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Ngành: Công nghệ thông tin - Cao đẳng) - Trường Cao đẳng Xây dựng số 1
77 p | 11 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Một số khái niệm cơ bản về cấu trúc dữ liệu và giải thuật
12 p | 91 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Tổng quan - Nguyễn Đức Cương
6 p | 99 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Cấu trúc dữ liệu và giải thuật
42 p | 55 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Ngô Quang Thạch
49 p | 63 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn