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 - Nguyễn Tri Tuấn

49 76 0
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 - Nguyễn Tri Tuấn

Đ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: Các cấu trúc dữ liệu cung cấp cho người học các kiến thức: Các cấu trúc dữ liệu cơ bản, cây nhị phân – Binary Trees, các cấu trúc dữ liệu nâng cao. Mời các bạn cùng tham khảo nội dung chi tiết.

Cấu trúc liệu & Giải thuật (Data Structures and Algorithms) Các cấu trúc liệu Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@fit.hcmus.edu.vn LOGO CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Các cấu trúc liệu Cây nhị phân – Binary Trees Các cấu trúc liệu nâng cao Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các cấu trúc liệu (Fundamental Data Structures) 1.1 Các danh sách liên kết – Linked Lists 1.2 Ngăn xếp – Stack 1.3 Hàng đợi - Queue Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Danh sách liên kết – Linked Lists  Đặt vấn đề  Danh sách liên kết ?  So sánh Mảng Danh sách liên kết  Danh sách liên kết đơn (Singly Linked List)  Danh sách liên kết đôi (Doubly Linked List) Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đặt vấn đề (1)  Nếu muốn thêm (Insert) phần tử vào mảng, phải ? 10 13 11 12 ? 18 Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đặt vấn đề (2)  Phải di chuyển phần tử phía sau vị trí 10 18 13 11 12 12  …rồi chèn phần tử vào 10 18 13 11  Vậy chi phí O(n) Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đặt vấn đề (3)  Tương tự, chi phí xóa phần tử mảng O(n)  Làm thêm (hay xố) phần tử mà khơng phải di chuyển phần tử khác ? Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đặt vấn đề (4)  Ta tách rời phần tử mảng, kết nối chúng lại với “móc xích” 10 20 Winter 2017 30 CuuDuongThanCong.com … … (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Đặt vấn đề (5)  Thao tác thêm phần tử cần thay đổi mối liên kết chỗ 10 20 30 … … 18  Chi phí O(1) Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Danh sách liên kết ? (1)  Hãy viết đặc điểm DSLK  Ít đặc điểm Winter 2017 10 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các cấu trúc liệu (Fundamental Data Structures) 1.1 Các danh sách liên kết – Linked Lists 1.2 Ngăn xếp – Stack 1.3 Hàng đợi - Queue Winter 2017 35 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Hàng đợi - Queue  Định nghĩa  Các thao tác  Cài đặt Queue mảng  Cài đặt Queue DSLK đơn  Ứng dụng Queue Winter 2017 36 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Định nghĩa  Queue cấu trúc liệu:  Dùng để lưu trữ nhiều phần tử liệu  Hoạt động theo chế “Vào trước – Ra trước” (First In/First Out – FIFO) Winter 2017 37 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các thao tác (1)  Khởi tạo Queue rỗng  Xóa Queue  Kiểm tra Queue rỗng ?  Thêm phần tử vào cuối Queue (EnQueue)  Lấy phần tử đầu Queue (DeQueue)  Lấy phần tử đầu Queue mà khơng xóa Winter 2017 38 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các thao tác (2)  EnQueue: thêm phần tử vào cuối Queue  DeQueue: lấy phần tử đầu Queue Winter 2017 39/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các thao tác (3) Minh họa thao tác EnQueue Winter 2017 40/203 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các thao tác (4) Minh họa thao tác DeQueue Winter 2017 41 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng mảng (1) Cấu tạo Queue Winter 2017 42 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng mảng (2) Minh họa hình ảnh phần tử chứa Queue Winter 2017 43 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng mảng (3) Khi thêm nhiều phần tử, làm “tràn” mảng  “Tràn giả” Winter 2017 44 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng mảng (4) Giải pháp cho tình “tràn giả”: xử lý mảng danh sách vòng Winter 2017 45 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng mảng (5) template class QUEUE { private: T *items; int front; int rear; int count; int maxSize; public: QUEUE(int size); // array of queue items // maximum size of queue // // QUEUE(const QUEUE &aQueue); // ~QUEUE(); // create queue with ‘size’ items copy constructor destructor // operations bool isEmpty(); bool enqueue(T newItem); bool dequeue(T &item); bool frontValue(T &item); }; // end class Winter 2017 46 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng DSLK đơn (1) - Enqueue: thêm node vào cuối DSLK đơn - Dequeue: xóa node đầu DSLK đơn Winter 2017 47 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Cài đặt Queue dùng DSLK đơn (2) template class QUEUE { private: struct QueueNode { T data; // data of item on the queue QueueNode *next; // pointer to next node }; QueueNode *front; QueueNode *rear; public: QUEUE(); QUEUE(const QUEUE &aStack); ~QUEUE(); // default constructor // copy constructor // destructor // operations bool isEmpty(); bool enqueue(T newItem); bool dequeue(T &item); bool frontValue(T &item); }; // end class Winter 2017 48 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Ứng dụng Queue  Quản lý xếp hàng (theo số thứ tự) VD Tại ngân hàng, bệnh viện,…  Quản lý phục vụ in ấn (máy in) Winter 2017 49 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt ... dung Các cấu trúc liệu Cây nhị phân – Binary Trees Các cấu trúc liệu nâng cao Winter 2017 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các cấu. .. -1 bool retrieveNode(int index, T &nodeData); }; // end class Winter 2017 21 CuuDuongThanCong.com (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM https://fb.com/tailieudientucntt Các cấu trúc liệu. .. https://fb.com/tailieudientucntt Định nghĩa  Stack cấu trúc liệu:  Dùng để lưu trữ nhiều phần tử liệu  Hoạt động theo chế “Vào sau – Ra trước” (Last In/First Out – LIFO) ** Cấu trúc Stack phát minh năm 1955, đăng

Ngày đăng: 11/01/2020, 16:41

Từ khóa liên quan

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

Tài liệu liên quan