Trình bày khái niệm Stack và Queue, Minh họa các ứng dụng, Các phương pháp xây dựng Stack và Queue dựa trên những cấu trúc dữ liệu đã biết
1Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM1pTrình bày khái niệm Stack và Queuep Minh họa các ứng dụngp Các phương pháp xây dựng Stack và Queue dựa trên những cấu trúc dữ liệu đã biếtNgăn xếp (Stack) –Hàng đợi (Queue)Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM2Nội dung trình bàyp Stackp Ví dụp Định nghĩap Các thao tác cơ bảnp Xây dựng Stackp Queuep Ví dụp Định nghĩap Các thao tác cơ bảnp Xây dựng Queue 2Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM3Ngăn xếp (Stack)Các Ví dụ về StackSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM4Ngăn xếp (Stack)Các Ví dụ về Stack 3Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM5Ngăn xếp (Stack)Định nghĩap Stack là 1 cấu trúc:p gồm nhiều phần tử có thứ tựp hoạt động theo cơ chế “Vào sau – Ra trước” (LIFO –Last In, First Out)Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM6Ngăn xếp (Stack)Định nghĩap Các thao tác cơ bản trên Stack:p InitStack: khởi tạo Stack rỗngp IsEmpty: kiểm tra Stack rỗng ?p IsFull: kiểm tra Stack đầy ?p Push: thêm 1 phần tử vào đỉnh Stack, có thể làm Stack đầyp Pop: lấy ra 1 phần tử từ đỉnh Stack, có thể làm Stack rỗngp Stack Top: kiểm tra phần tử đầu Stack 4Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM7Ngăn xếp (Stack)Minh họa các thao tácThao tác PushSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM8Ngăn xếp (Stack)Minh họa các thao tácThao tác Pop 5Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM9Ngăn xếp (Stack)Minh họa các thao tácThao tác Stack Top, Stack không thay đổiSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM10Ngăn xếp (Stack)Xây dựng Stackp Có 2 cách để xây dựng Stack:p Sử dụng mảng 1 chiềup Sử dụng danh sách liên kết đơn 6Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM11Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảng5 2StkArrayStkMaxStkTop[0][1][2][3][4]Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM12Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảng// Giả sử Stack chứa các phần tử kiểu nguyên// (int) -Khai báo cấu trúc Stacktypedef struct STACK {int *StkArray; // mảng chứa các phần tửintStkMax; // số phần tử tối đaintStkTop;// vị trí đỉnh Stack} 7Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM13Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảngp Thao tác “Khởi tạo Stack rỗng”int InitStack(STACK &s, int MaxItems){s.StkArray = new int[MaxItems];if (s.StkArray==NULL)return 0; // Không cấp phát được bộ nhớs.StkMax = MaxItems; s.StkTop = -1;// chưa có phần tử nào trong Stackreturn 1;// khởi tạo thành công}Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM14Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảngp Thao tác “Kiểm tra Stack rỗng”int IsEmpty(const STACK &s){if (s.StkTop==-1) return 1;// Stack rỗngreturn 0;// Stack không rỗng} 8Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM15Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảngp Thao tác “Kiểm tra Stack đầy”int IsFull(const STACK &s){if (s.StkTop==s.StkMax-1) return 1;// Stack đầyreturn 0;// Stack chưa đầy}Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM16Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảngp Thao tác “Push”: thêm 1 phần tử vào đỉnh Stackint Push(STACK &s, int newitem){if (IsFull(s))return 0; // Stack đầy, không thêm vào đượcs.StkTop++;s.StkArray[s.StkTop] = newitem;return 1;// Thêm thành công} 9Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM17Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảngp Thao tác “Pop”: lấy ra 1 phần tử từ đỉnh Stackint Pop(STACK &s, int &outitem){if (IsEmpty(s))return 0; // Stack rỗng, không lấy ra đượcoutitem = s.StkArray[s.StkTop];s.StkTop--;return 1;// Lấy ra thành công}Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM18Ngăn xếp (Stack)Xây dựng Stack, sử dụng mảngp Thao tác “StackTop”: kiểm tra 1 phần tử ở đỉnh Stack, không làm thay đổi Stackint StackTop(const STACK &s, int &outitem){if (IsEmpty(s))return 0; // Stack rỗng, không lấy ra đượcoutitem = s.StkArray[s.StkTop];return 1;// Lấy ra thành công} 10Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM19Ngăn xếp (Stack) –Ví dụ ứng dụngp Kiểm tra sự tương ứng của dấu ngoặc đơn trong 1 biểu thứcp Đảo ngược 1 chuỗi ký tựSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM20Ngăn xếp (Stack)Xây dựng Stack, sử dụng Danh sách liên kết [...]... Tp.HCM61 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Dùng 1 mảng (QArray) để chứa các phần tử p Dùng 1 số nguyên (QMax) để lưu số phần tử tối đa trong hàng đợi p Dùng 2 số nguyên (QFront, QRear) để xác định vị trí Đầu, Cuối hàng đợi p Dùng 1 số nguyên (QNumItems) để lưu số phần tử hiện có trong hàng đợi Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM62 Hàng đợi. .. Khoa CNTT ĐH KHTN Tp.HCM55 Hàng đợi (Queue) Queue: Các phần tử thêm vào cuối (Rear), và lấy ra ở đầu (Front) Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM56 Hàng đợi (Queue) Minh họa các thao tác Thao tác EnQueue 34 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM67 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Thao... & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM65 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Giải pháp là gì ? Có nên Sử dụng 1 mảng vô cùng lớn ? p Khi thêm nhiều phần tử, sẽ làm “tràn” mảng à “Tràn giả” Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM66 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Giải pháp cho tình huống “tràn giả”:... Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM69 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Thao tác “Kiểm tra Queue đầy” int IsFull(const QUEUE &q) { if (q.QNumItems==q.QMax) return 1;// Queue đầy return 0;// Queue không đầy } Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM70 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Thao tác “EnQueue”: thêm... Tp.HCM73 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Thao tác “QueueRear”: kiểm tra phần tử ở cuối Queue int QueueRear(const QUEUE &q, int &itemout) { if (IsEmpty(q)) return 0;// Queue rỗng, không kiểm tra // lấy phần tử cuối ra itemout = q.QArray[q.QRear]; return 1; } Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM74 Hàng đợi (Queue) –Ví dụ ứng... Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM58 Hàng đợi (Queue) Minh họa các thao tác Thao tác QueueFront 16 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM31 Ngăn xếp (Stack) Xây dựng Stack, sử dụng Danh sách liên kết Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM32 Ngăn xếp (Stack) Xây dựng Stack, sử dụng Danh sách liên... KHTN Tp.HCM72 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Thao tác “QueueFront”: kiểm tra phần tử ở đầu Queue int QueueFront(const QUEUE &q, int &itemout) { if (IsEmpty(q)) return 0;// Queue rỗng, không kiểm tra // lấy phần tử đầu ra itemout = q.QArray[q.QFront]; return 1; } 29 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM57 Hàng đợi (Queue) Minh... Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM68 Hàng đợi (Queue) Xây dựng hàng đợi, sử dụng mảng p Thao tác “Kiểm tra Queue rỗng” int IsEmpty(const QUEUE &q) { if (q.QNumItems==0) return 1;// Queue rỗng return 0;// Queue không rỗng } 12 Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM23 Ngăn xếp (Stack) Xây dựng Stack, sử dụng Danh sách liên kết p VD.... Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM53 Hàng đợi (Queue) Định nghĩa p Queue là 1 cấu trúc: p gồm nhiều phần tử có thứ tự p hoạt động theo cơ chế “Vào trước – Ra trước” (FIFO –First In, First Out) Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM54 Hàng đợi (Queue) Định nghĩa p Các thao tác cơ bản trên Queue: p InitQueue: khởi tạo... 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM5 Ngăn xếp (Stack) Định nghĩa p Stack là 1 cấu trúc: p gồm nhiều phần tử có thứ tự p hoạt động theo cơ chế “Vào sau – Ra trước” (LIFO –Last In, First Out) Spring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM6 Ngăn xếp (Stack) Định nghĩa p Các thao tác cơ bản trên Stack: p InitStack: khởi tạo . xây dựng Stack và Queue dựa trên những cấu trúc dữ liệu đã biếtNgăn xếp (Stack) Hàng đợi (Queue)Spring 2004Data Structure & Algorithm - Nguyen Tri. KHTN Tp.HCM 3Ngăn xếp (Stack)Các Ví dụ về StackSpring 2004Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 4Ngăn xếp (Stack)Các