Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Trần Minh Thái (Trường Đại học Hồng Bàng )

43 38 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Trần Minh Thái (Trường Đại học Hồng Bàng )

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 3: Tổ chức ngăn xếp (Stack) & Hàng đợi (Queue) trên mảng một chiều cung cấp cho người học các khái niệm Ngăn xếp (Stack) và Hàng đợi (Queue), các thao tác trên Ngăn xếp và Hàng đợi, minh họa các ứng dụng. Mời các bạn cùng tham khảo.

Chương Tổ chức ngăn xếp (Stack) & Hàng đợi (Queue) mảng chiều Trần Minh Thái Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Nội dung Trình bày khái niệm Ngăn xếp (Stack) Hàng đợi (Queue) Các thao tác Ngăn xếp Hàng đợi Minh họa ứng dụng Ngăn xếp Ngăn xếp gì? Cách khai báo cấu trúc ngăn xếp dùng mảng chiều? Các ứng dụng Cài đặt Ví dụ Ngăn xếp Thành phần lấy đầu tiên? Khái niệm Stack Gồm nhiều phần tử lưu trữ theo thứ tự Hoạt động theo chế “Vào sau – Ra trước” (LIFO – Last In, First Out) Đỉnh ngăn xếp Thao tác Stack InitStack: khởi tạo Stack rỗng IsEmpty: kiểm tra Stack rỗng? Push Pop IsFull: kiểm tra Stack đầy? Push: thêm phần tử vào Stack Pop: lấy phần tử khỏi Stack PUSH Thao tác Push vào Stack Top Thao tác Pop khỏi stack Top POP Stack – Sử dụng mảng Top C B A Stack B C Top A 9 Ngăn xếp – Sử dụng mảng A B Top A C Top B A D Top C B A E Top D C B A Top D C B A Top 10 Queue số nguyên – Sử dụng mảng Khi thêm nhiều phần tử xảy tượng “tràn giả” Qarray 37 22 15 QMax = QNumItems = QFront = QRear = Giải pháp? Nối dài mảng (mảng động) hay sử dụng mảng vô lớn? 29 Queue số nguyên – Sử dụng mảng Xử lý mảng danh sách liên kết vòng Qarray QMax = QNumItems = QFront = QRear = 6 37 22 15 30 Queue số nguyên – Sử dụng mảng VD: Cho queue sau Chỉ số mảng QArray QMax QNumItems QFront QRear   11 19 21 81     5 Queue số nguyên – Sử dụng mảng Thêm giá trị 123 vào hàng đợi Chỉ số mảng QArray QMax QNumItems QFront QRear   11 19 21 81  123   6 Queue số nguyên – Sử dụng mảng Lấy phần tử khỏi hàng đợi Chỉ số mảng QArray QMax QNumItems QFront QRear   11 19 21 81  123   Queue số nguyên – Sử dụng mảng Thêm giá trị 456 vào hàng đợi Chỉ số mảng QArray QMax QNumItems QFront QRear  456 11 19 21 81  123   Queue số nguyên – Sử dụng mảng bool InitQueue(QUEUE &q, int MaxItem) { q.QArray = new int[MaxItem]; if (q.QArray == NULL) return false; q.QMax = MaxItem; q.QNumItems = 0; q.QFront = q.QRear = -1; return true; } 35 Queue số nguyên – Sử dụng mảng bool IsEmpty(QUEUE q) { if (q.QNumItems == 0) return true; return false; } 36 Queue số nguyên – Sử dụng mảng bool IsFull(QUEUE q) { if (q.QMax == q.QNumItems) return true; return false; } 37 Queue số nguyên – Sử dụng mảng bool EnQueue(QUEUE &q, int newitem) { if (IsFull(q)) return false; q.QRear++; if (q.QRear==q.QMax) q.QRear = 0; q.QArray[q.QRear] = newitem; if (q.QNumItems==0) q.QFront = 0; q.QNumItems++; return true; } 38 Queue số nguyên – Sử dụng mảng bool DeQueue(QUEUE &q, int &itemout) { if (IsEmpty(q)) return false; itemout = q.QArray[q.QFront]; q.QFront++; q.QNumItems ; if (q.QFront==q.QMax) q.QFront = 0; if (q.QNumItems==0) q.QFront = q.QRear = -1; return true; } 39 Queue số nguyên – Sử dụng mảng bool QueueFront(const QUEUE &q, int &itemout) { if (IsEmpty(q)) return false; itemout = q.QArray[q.QFront]; return true; } 40 Queue số nguyên – Sử dụng mảng bool QueueRear(const QUEUE &q, int &itemout) { if (IsEmpty(q)) return false; itemout = q.QArray[q.QRear]; return true; } 41 Bài tập áp dụng Viết chương trình nhập/ xuất hàng đợi số nguyên (dùng mảng chiều) Cho biết hàng đợi có số lẻ 42 Queue – Ví dụ ứng dụng Quản lý việc thực tác vụ (task) môi trường xử lý song song Hàng đợi in ấn tài liệu Vùng nhớ đệm (buffer) dùng cho bàn phím Quản lý thang máy 43 ... phải trục vào stack Stack rỗng Stop (3, 4) (0, 4) (0, 1) t 35 57 7 53 i j 21 Queue Phòng vé 22 Queue – Định nghĩa Hàng đợi cấu trúc: Gồm nhiều phần tử có thứ tự Hoạt động theo chế “Vào trước,... (q.QFront==q.QMax) q.QFront = 0; if (q.QNumItems== 0) q.QFront = q.QRear = -1 ; return true; } 39 Queue số nguyên – Sử dụng mảng bool QueueFront(const QUEUE &q, int &itemout) { if (IsEmpty(q )) return false;... s.StkTop ; return true; } 16 Bài tập Viết hàm nhập xuất Stack số nguyên Khai báo cấu trúc viết hàm tạo Stack từ chuỗi ký tự str (mỗi phần tử Stack ký t? ?) Khai báo cấu trúc viết hàm tạo Stack từ

Ngày đăng: 10/05/2021, 23:16

Từ khóa liên quan

Mục lục

  • Slide 1

  • Nội dung

  • Ngăn xếp

  • Ví dụ về Ngăn xếp

  • Khái niệm Stack

  • Thao tác cơ bản trên Stack

  • Thao tác Push vào Stack

  • Thao tác Pop khỏi stack

  • Stack – Sử dụng mảng

  • Ngăn xếp – Sử dụng mảng

  • Ví dụ, Ngăn xếp chứa số nguyên – Sử dụng mảng

  • Ngăn xếp số nguyên – Sử dụng mảng

  • Ngăn xếp số nguyên – Sử dụng mảng

  • Stack số nguyên – Sử dụng mảng

  • Stack số nguyên – Sử dụng mảng

  • Stack số nguyên – Sử dụng mảng

  • Bài tập

  • Stack – Ví dụ ứng dụng

  • Stack – Ứng dụng

  • Stack – Quick Sort

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

Tài liệu liên quan