1. Trang chủ
  2. » Giáo án - Bài giảng

cấu trúc dữ liệu Chong va Hang

25 120 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 267,68 KB

Nội dung

tài liệu uy tín được biên soạn bởi giảng viên đại học Bách Khoa TPHCM, thuận lợi cho qua trình tự học, nghiên cứu bộ tự động hóa, điện tử, cơ điện tử, cơ khí chế tạo máy, lập trình nhúng, Tài liệu được kiểm duyệt bởi giảng viên, phòng đào tạo trường đại học bách khoa, lưu hành nội bộ

Chương Chồng Hàng (Buổi 8, 9) Nội dung Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Chồng Hàng Phần trình bày danh sách hạn chế (restricted list) mà tác vụ thêm vào loại bỏ thực đầu, cuối danh sách Hai danh sách thuộc loại chồng (stack) hàng (queue) Chồng: tác vụ thêm vào loại bỏ thực đầu danh sách (LIFO – Last-In First-Out list) f Hàng: tác vụ thêm vào thực cuối danh sách, tác vụ loại bỏ thực đầu danh sách (FIFO – First-In First-Out list) f Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Chồng Hàng Chồng hàng cài đặt mảng danh sách liên kết Danh sách hạn chế Chồng (stack) Mảng (array) Hàng (queue) Danh sách liên kết (linked list) Mảng (array) Danh sách liên kết (linked list) Các loại danh sách hạn chế Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Định nghĩa chồng ™ Chồng (stack) danh sách mà tác vụ thêm vào (push) tác vụ lấy (pop) thực đầu danh sánh (được gọi đỉnh chồng) Dữ liệu thêm vào sau lấy trước (LIFO – Last-In First-Out) f Dữ liệu thêm vào trước lấy sau (FILO – First-In Last-Out) f Đỉnh (top) chồng trỏ sp (stack pointer) f Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Định nghĩa chồng Thêm vào Lấy Đỉnh sp … … Chồng tác vụ thêm vào, lấy Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Định nghĩa chồng 3 sp sp sp 2 1 sp sp 2 1 sp t Ví dụ tác vụ thêm vào lấy chồng Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Các tác vụ chồng Khởi tạo chồng rỗng (empty stack) ™ Thêm phần tử vào chồng (push) ™ Lấy phần tử khỏi chồng (pop) ™ Xem đỉnh chồng (peek) ™ Xóa bỏ chồng (clear) ™ Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Cài đặt chồng danh sách liên kết Sp null Chồng danh sách liên kết Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng Cấu trúc liệu ™ Item Mỗi phần tử có hai phần: f Info: chứa thơng tin phần tử, là: vùng tin (field), cấu trúc (structure) f Link: chứa tham chiếu đến phần tử chồng Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 10 Cấu trúc liệu #include using namespace std; struct Item; typedef Item* ref; struct Item { int Info; ref Link; }; int main() { ref sp; return 0; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 11 Các tác vụ chồng void InitStack(ref& sp) // Tạo stack rỗng { sp = NULL; } bool IsEmpty(ref sp) // Kiểm tra stack rỗng { bool kq = sp == NULL; return kq; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 12 Các tác vụ chồng void Push(ref& sp, int x) // Thêm x vào stack { ref p = new Item; p->Info = x; p->Link = sp; sp = p; } int Pop(ref& sp) // Lấy phần tử khỏi stack { int x; ref p = sp; x = p->Info; sp = p->Link; delete p; return x; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 13 Các tác vụ chồng int Peek(ref sp) // Xem đỉnh stack { int x = sp->Info; return x; } void Clear(ref& sp) // Hủy bỏ toàn stack { ref p = sp; while (p != NULL) { sp = p->Link; delete p; p = sp; } } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 14 Định nghĩa hàng ™ Hàng (queue) danh sách mà tác vụ thêm vào đầu tác vụ lấy đầu danh sách Dữ liệu thêm vào trước lấy trước (FIFO – Fisrt-In First-Out) f Dữ liệu thêm vào sau lấy sau (LILO – Last-In Last-Out) f Lấy Thêm vào Hàng tác vụ thêm vào, lấy Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 15 Định nghĩa hàng A Thêm vào A A B A B A B C B C Thêm vào B C Thêm vào C Lấy A Lấy B Ví dụ tác vụ thêm vào lấy hàng Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 16 Các tác vụ hàng Khởi tạo hàng rỗng (empty queue) ™ Thêm phần tử vào hàng (enqueue): thêm vào đầu Rear ™ ™ Lấy phần tử khỏi hàng (dequeue): lấy đầu Front Xem phần tử hàng (peek) ™ Xóa bỏ hàng (clear) ™ Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 17 Cài đặt hàng danh sách liên kết item Front item item Rear null Cấu trúc hàng danh sách liên kết Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 18 Cấu trúc liệu ™ Item Mỗi phần tử có hai phần: f Info: chứa thơng tin phần tử, là: vùng tin (field), cấu trúc (structure) f Link: chứa tham chiếu đến phần tử hàng ™ Queue Front: tham chiếu đến đầu lấy hàng f Rear: tham chiếu đến đầu thêm vào hàng f Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 19 Cấu trúc liệu #include using namespace std; struct Item; typedef Item* ref; struct Item { int Info; ref Link; }; struct Queue { ref Front; ref Rear; }; Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 20 Các tác vụ hàng int main() { Queue q; return 0; } void InitQueue(Queue& q) // Tạo hàng rỗng { q.Front = NULL; q.Rear = NULL; } bool IsEmpty(Queue q) // Kiểm tra hàng rỗng { bool kq = q.Front == NULL; return kq; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 21 Các tác vụ hàng void Enqueue(Queue& q, int x) // Thêm x vào hàng { ref p = new Item; p->Info = x; p->Link = NULL; if (q.Front == NULL) q.Front = p; else q.Rear->Link = p; q.Rear = p; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 22 Các tác vụ hàng int Dequeue(Queue& q) // Lấy phần tử khỏi hàng { int x; ref p = q.Front; x = p->Info; if (q.Front == q.Rear) q.Rear = NULL; q.Front = p->Link; delete p; return x; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 23 Các tác vụ hàng int Peek(Queue q) // Xem đầu hàng { int x = q.Front->Info; return x; } void Clear(Queue& q) // Hủy bỏ toàn hàng { ref p = q.Front; while (p != NULL) { q.Front = p->Link; delete p; p = q.Front; } q.Rear = NULL; } Trường Đại học Bách Khoa Tp.HCM Khoa Khoa học Kỹ thuật Máy tính © 2015 NGUYỄN TRUNG TRỰC Cấu trúc liệu Giải thuật Chương Chồng Hàng 24 Các tác vụ hàng void Display(Queue q) // Duyệt hàng { ref p = q.Front; while (p != NULL) { cout Info

Ngày đăng: 03/02/2018, 08:23

TỪ KHÓA LIÊN QUAN

w