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
lượt xem 3
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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
- Cấu trúc dữ liệu & Giải thuật (Data Structures and Algorithms) Các cấu trúc dữ 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 1 Các cấu trúc dữ liệu cơ bản 2 Cây nhị phân – Binary Trees 3 Các cấu trúc dữ liệu nâng cao Winter 2017 2 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Các cấu trúc dữ liệu cơ bản (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 3 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết – Linked Lists Đặt vấn đề Danh sách liên kết là gì ? So sánh Mảng và 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 4 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Đặt vấn đề (1) Nếu muốn thêm (Insert) 1 phần tử vào mảng, phải làm sao ? 10 5 13 11 6 12 9 ? 18 Winter 2017 5 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Đặt vấn đề (2) Phải di chuyển các phần tử về phía sau 1 vị trí ... 18 10 5 13 11 6 12 9 …rồi chèn phần tử mới vào 10 5 18 13 11 6 12 9 Vậy chi phí là O(n) Winter 2017 6 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Đặt vấn đề (3) Tương tự, chi phí xóa 1 phần tử trong mảng cũng là O(n) Làm sao có thể thêm (hay xoá) 1 phần tử mà không phải di chuyển các phần tử khác ? Winter 2017 7 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Đặt vấn đề (4) Ta tách rời các phần tử của mảng, và kết nối chúng lại với nhau bằng một “móc xích” 10 20 30 … … Winter 2017 8 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Đặt vấn đề (5) Thao tác thêm phần tử chỉ cần thay đổi các mối liên kết tại chỗ 10 20 30 … … 18 Chi phí O(1) Winter 2017 9 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết là gì ? (1) Hãy viết ra các đặc điểm của DSLK Ít nhất 5 đặc điểm Winter 2017 10 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết là gì ? (2) Đặc điểm của DSLK Sử dụng con trỏ (pointer) Cấp phát bộ nhớ động Dãy tuần tự các node Giữa hai node có 1 hay nhiều con trỏ liên kết Các node không cần phải lưu trữ liên tiếp nhau trong bộ nhớ Có thể mở rộng tuỳ ý (chỉ giới hạn bởi dung lượng bộ nhớ) Thao tác Thêm/Xóa không cần phải dịch chuyển phần tử Winter 2017 11 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- So sánh Mảng và Danh sách liên kết Mảng Danh sách liên kết Kích thước cố định Số phần tử thay đổi tùy ý linh hoạt và tiết kiệm bộ nhớ Các phần tử lưu trữ tuần tự Các phần tử lưu trữ rời rạc, (địa chỉ tăng dần) trong bộ liên kết với nhau bằng con trỏ nhớ Phải tịnh tiến các phần tử khi Chỉ cần thay đổi con trỏ liên muốn Thêm/Xóa 1 phần tử - kết khi muốn Thêm/Xóa 1 chi phí O(n) phần tử - chi phí O(1) Truy xuất ngẫu nhiên (nhanh) Truy xuất tuần tự (chậm) Sử dụng ít bộ nhớ hơn (nếu có Sử dụng nhiều bộ nhớ hơn cùng số phần tử) (nếu có cùng số phần tử) Winter 2017 12 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đơn (1) Đặc điểm: Mỗi node chỉ có 1 con trỏ liên kết (đến node kế tiếp trong danh sách) Winter 2017 13 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đơn (2) Các thao tác cơ bản Khởi tạo danh sách Xóa danh sách Kiểm tra danh sách rỗng Đếm số phần tử trong danh sách Thêm node vào đầu danh sách Xóa node ở đầu danh sách Thêm node ở cuối danh sách Xóa node ở cuối danh sách Tìm một node Lấy thông tin của một node Winter 2017 14 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đơn (3) Minh họa thao tác thêm node Minh họa thao tác xóa node Winter 2017 15 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đơn (4) template class LINKED_LIST { private: struct ListNode { T data; // data of node ListNode *next; // pointer to next node }; int size; // number of node in list ListNode *head; // pointer to 1st node in list public: LINKED_LIST(); // default constructor LINKED_LIST(const LINKED_LIST &aList); // copy constructor ~LINKED_LIST(); // destructor // operations bool isEmpty(); int getLength(); bool addHead(T newItem); bool removeHead(); bool addTail(T newItem); bool removeTail(); int findNode(T key); // return node index or -1 bool retrieveNode(int index, T &nodeData); }; // end class Winter 2017 16 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đôi (1) Đặc điểm: Mỗi node có 2 con trỏ liên kết đến node kế tiếp (next) và node phía trước (prev) trong danh sách Winter 2017 17 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đôi (2) Các thao tác cơ bản Khởi tạo danh sách Xóa danh sách Kiểm tra danh sách rỗng Đếm số phần tử trong danh sách Thêm node vào đầu danh sách Xóa node ở đầu danh sách Thêm node ở cuối danh sách Xóa node ở cuối danh sách Tìm một node Lấy thông tin của một node Winter 2017 18 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đôi (3) Minh họa thao tác thêm node Winter 2017 19 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Danh sách liên kết đôi (4) Minh họa thao tác xóa node Winter 2017 20 (C) Nguyen Tri Tuan - Truong DH.KHTN DHQG-HCM CuuDuongThanCong.com https://fb.com/tailieudientucntt
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
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
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu mảng với danh sách liên kết - Bùi Tiến Lên
36 p | 41 | 5
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 105 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Châu Thị Bảo Hà
133 p | 113 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 46 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn