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 cơ bản - Đậu Ngọc Hà Dương có nội dung trình bày các kiến thức về danh sách liên kết, ngăn xếp, hàng đợi,... Mời các bạn cùng tham khảo!
Cấu trúc dữ liệu và giải thuật CÁC CẤU TRÚC DỮ LiỆU CƠ BẢN Giảng viên: Nội dung trình bày Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Danh sách liên kết Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Nội dung Giới thiệu Các loại danh sách liên kết Các thao tác danh sách liên kết So sánh danh sách liên kết mảng Ứngữdụng Cấu trúc d liệu và giải thuật – HCMUS 2012 Giới thiệu Mảng: cấu trúc liệu quen thuộc Tập có thứ tự Số lượng phần tử cố định (tĩnh) Cấp phát vùng nhớ liên tục Truy xuất phần tử thông qua chỉ số Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Giới thiệu Đánh giá thao tác mảng: Truy xuất phần tử? Cập nhật? Chèn phần tử? Xoá phần tử? Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Giới thiệu Thực tế: Khơng xác định được chính xác số lượng phần tử Danh sách bệnh nhân: tăng/giảm Danh sách sinh viên: tăng/giảm Vùng nhớ thay đổi trong q trình sử dụng => Khơng đủ vùng nhớ cấp phát liên tục C ấu trúc d ệu và gi ải thu ật – HCMUS 2012 => Cấuữ litrúc liệu động đáp ứng nhu cầu Các loại danh sách liên kết Danh sách liên kết đơn singly linked list unidirectional linked list Danh sách liên kết kép doubly linked list bidirectional linked list Danh sách liên kết vòng circularly linked list ring list Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Danh sách liên kết đơn Mỗi phần tử có MỘT liên kết đến phần tử phía sau 12 9 37 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Danh sách liên kết đơn 10 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Các thao tác hàng đợi 62 Thao tác bản: Enqueue: Thêm 1 đối tượng vào cuối hàng đợi Dequeue: Lấy đối tượng ở đầu ra khỏi hàng đợi Thao tác khác: Lưu trữ hàng đợi Kiểm tra hàng đợi rỗng Kiểm tra hàng đợi đầy Cấu trúc d ữ liệu và giải thuật – HCMUS 2012 Lấy thông tin của đối tượng ở đầu hàng đợi Lưu trữ hàng đợi 63 Lưu trữ mảng: Khai báo mảng 1 chiều với kích thước tối đa N f là địa chỉ của phần tử nằm ở đầu, r là địa chỉ của phần tử nằm ở cuối Hàng đợi 6 f=2 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 r=6 Lưu trữ hàng đợi 64 Lưu trữ mảng: Các phần tử của hàng đợi sẽ di chuyển khắp các ơ nhớ coi khơng gian dành cho hàng đợi theo dạng xoay vịng Hàng đợi khi xoay vòng: 6 r=2 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 f=6 Lưu trữ hàng đợi 65 Lưu trữ hàng đợi danh sách liên kết đơn Phần tử đầu DSLK sẽ là phần tử đầu hàng đợi Phần tử cuối DSLK s ẽ là phần tử cuối hàng đợi 37 12 pHead pTail Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Kiểm tra hàng đợi rỗng 66 Input: Output: TRUE nếu hàng đợi rỗng FALSE nếu hàng đợi không rỗng Hàng đợi rỗng: Mảng: ô nhớ đầu tiên không chứa dữ liệu Cấu trúc dữ liệu và giải thuật – HCMUS 2012 DSLK: pHead = NULL Kiểm tra hàng đợi đầy 67 Input: Output: TRUE nếu hàng đợi đầy FALSE nếu hàng đợi không đầy Hàng đợi đầy: Mảng: ô nhớ cuối hàng đợi đã chứa dữ liệu Cấu trúc dữ liệu và giải thuật – HCMUS 2012 DSLK: không cấp phát được vùng nhớ cho phần tử Thêm phần tử vào cuối hàng đợi 68 Input: giá trị cần thêm Output: Giải thuật thêm phần tử (EnQueue) Kiểm tra hàng đợi đã đầy chưa? Trong trường hợp lưu trữ bằng mảng: kiểm tra điều kiện xoay vòng Thêm phần tử vào cuối hàng đợi Cậữp nh Cấu trúc d liệu và gi ật – HCMUS 2012 ật đảịi thu a ch ỉ phần tử cuối hàng đợi Thêm phần tử vào cuối hàng đợi 69 Ví dụ: Hàng đợi ban đầu 6 r=6 f=2 EnQueue(9) f=2 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 r=7 Lấy phần tử đầu khỏi hàng đợi 70 Input: Output: giá trị phần tử đầu hàng đợi Giải thuật lấy phần tử đầu (DeQueue) Kiểm tra hàng đợi có rỗng khơng? Xóa phần tử đầu ra khỏi hàng đợi Cập nhật địa chỉ phần tử đầu hàng đợi Trong trường hợp lưu trữ bằng mảng: kiểm tra điều Cấu trúc d liệu và giải thuật – HCMUS 2012 kiệữn xoay vòng Lấy phần tử đầu khỏi hàng đợi 71 Ví dụ: Hàng đợi ban đầu 6 r=6 f=2 DeQueue() = f=3 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 r=6 Lấy thông tin đầu hàng đợi 72 Chỉ lấy thông tin đối tượng đầu hàng đợi mà không hủy đối tượng khỏi hàng đợi Input: hàng đợi Output: giá trị đối tượng đầu hàng đợi Giải thuật: Kiểm tra hàng đợi rỗng? Cấu trúc d ữ li ải thu Trả vệều và gi giá tr ị cậủt – HCMUS 2012 a phần tử đầu hàng đợi Lấy thông tin đầu hàng đợi 73 Ví dụ: Hàng đợi ban đầu 6 r=6 f=2 GetFront() = 1 f=2 Cấu trúc dữ liệu và giải thuật – HCMUS 2012 r=6 Ứng dụng hàng đợi 74 Bộ đệm bàn phím máy tính Xử lý lệnh máy tính: hàng đợi thơng điệp Windows, hàng đợi tiến trình … Thường dùng hệ mơ Cấu trúc dữ liệu và giải thuật – HCMUS 2012 Bài tập 75 Cho hàng đợi ban đầu sau: (hàng đợi có tối đa phần tử) A f = 1 B C r = 3 Vẽ tình trạng hàng đợi, cho biết giá trị f, r tương ứng với lần thực thao tác sau: a.ấu trúc d Bổ ữsung Eải thu vào hàng đợi C liệu và gi ật – HCMUS 2012 76 Hỏi Đáp Cấu trúc dữ liệu và giải thuật – HCMUS 2012 ... Con trỏ đến phần tử đầu (hoặc /và? ?cuối) danh sách (Các) phần tử trên danh sách Dữ liệu Các mối liên kết 12 9 Cấu? ?trúc? ?dữ? ?liệu? ?và? ?giải? ?thuật – HCMUS 2012 37 Tổ chức 17 12 9 37 pHead 12 9 pHead Cấu? ?trúc? ?dữ? ?liệu? ?và? ?giải? ?thuật – HCMUS 2012... rỗng Cấu? ?trúc? ?dữ? ?liệu? ?và? ?giải? ?thuật – HCMUS 2012 9 Ví dụ 14 Ví dụ: Phần tử có? ?dữ? ?liệu? ?gồm 1 thành phần number Phần tử có? ?dữ? ?liệu? ?gồm 3 thành phần name Phần tử có d ữ liệidu gnumber ồm 1? ?cấu? ?trúc. .. dung trình bày Cấu? ?trúc? ?dữ? ?liệu? ?và? ?giải? ?thuật – HCMUS 2012 Danh sách liên kết Cấu? ?trúc? ?dữ? ?liệu? ?và? ?giải? ?thuật – HCMUS 2012 Nội dung Giới thiệu Các loại danh sách liên kết Các thao tác danh