Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 – Trần Minh Thái (2017)

65 6 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 (2017)

Đ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 trình bày các nội dung: Trình bày 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? 51 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 52 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 int InitQueue(QUEUE &q, int MaxItem) { q.QArray = new int[MaxItem]; if (q.QArray == NULL) return 0; q.QMax = MaxItem; q.QNumItems = 0; q.QFront = q.QRear = -1; return 1; } 57 Queue số nguyên – Sử dụng mảng int IsEmpty(QUEUE q) { if (q.QNumItems == 0) return 1; return 0; } 58 Queue số nguyên – Sử dụng mảng int IsFull(QUEUE q) { if (q.QMax == q.QNumItems) return 1; return 0; } 59 Queue số nguyên – Sử dụng mảng int EnQueue(QUEUE &q, int newitem) { if (IsFull(q)==1) return 0; 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 1; } 60 Queue số nguyên – Sử dụng mảng int DeQueue(QUEUE &q, int &itemout) { if (IsEmpty(q)==1) return 0; 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 1; } 61 Queue số nguyên – Sử dụng mảng int QueueFront(const QUEUE &q, int &itemout) { if (IsEmpty(q)==1) return 0; itemout = q.QArray[q.QFront]; return 1; } 62 Queue số nguyên – Sử dụng mảng int QueueRear(const QUEUE &q, int &itemout) { if (IsEmpty(q)==1) return 0; itemout = q.QArray[q.QRear]; return 1; } 63 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ẻ 64 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 65 ... - * / % eos isp 19 12 12 13 13 13 icp 20 19 12 12 13 13 13 Bài tập 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ừ... sang phải 3. 1 Nếu token tốn hạng thêm vào cuối list 3. 2 Nếu token dấu ( push vào opstack 3. 3 Nếu token dấu ) pop tốn tử opstack cho đến gặp dấu mở ngoặc Lần lượt thêm toán tử vào cuối list 3. 4 Nếu... trục vào stack Stack rỗng Stop (3, 4) (0,4) (0,1) t 35 57 7 53 i j 30 Thực thi biểu thức Giả sử có biểu thức X = a / b - c + d * e - a * c Với a = 4, b = c = 2, d = e = Diễn giải 1: ((4/2)-2)+ (3* 3)-(4*2)=0

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 – Ứng dụng

  • Stack – Ứng dụng

  • Bài toán tháp HaNoi

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

Tài liệu liên quan