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
lượt xem 5
download
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" cung cấp cho người đọc các kiến thức về kiểu dữ liệu mảng, ứng dụng của mảng, kiểu dữ liệu mảng, danh sách liên kết,... Mời các bạn cùng tham khảo.
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ấu trúc dữ liệu mảng với danh sách liên kết - Bùi Tiến Lên
- CẤU TRÚC DỮ LIỆU MẢNG VS DANH SÁCH LIÊN KẾT Bùi Tiến Lên 01/01/2017 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- MẢNG CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Kiểu dữ liệu mảng Định nghĩa 1 Mảng (array) là một tập hợp các phần tử X = {x0 , ..., xn } được tổ chức tuyến tính I Các phần tử xi được lưu trữ liên tiếp nhau I Các phần tử xi được truy xuất thông qua các chỉ số Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 3
- Kiểu dữ liệu mảng (cont.) Ưu điểm của kiểu dữ liệu mảng I Đơn giản I Xử lý nhanh I Bộ nhớ lưu trữ liên tục I Số lượng phần tử tương đối cố định Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 4
- Ứng dụng của mảng Kiểu dữ liệu mảng rất phù hợp với các đối tượng như vector, hay ma trận. Do đó, nó rất phù hợp với các ứng dụng toán học Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 5
- Thêm một phần tử vào mảng 1. Di chuyển các phần tử về phía sau một vị trí 2. Sau đó mới chèn phần tử mới vào 3. Vậy chi phí là O(n) Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 6
- Thêm một phần tử vào mảng (cont.) Chương trình 1: Hàm thêm một phần tử x vào mảng a có n phần tử tại vị trí k 1 void Insert (int a[], int &n, int x, int k) 2 { 3 for (int i = n; i > k; i--) 4 a[i] = a[i - 1]; 5 a[k] = x; 6 n++; 7 } Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 7
- Minh họa Ví dụ 1 Một mảng a có 6 phần tử a = {1, 2, 4, 3, 8, 5}, hãy chèn phần tử 9 vào vị trí có chỉ số 2 của mảng a 1 2 4 3 8 5 I Dời các phần tử từ chỉ số 2 sang phải một đơn vị 1 2 4 4 3 8 5 I Gán giá trị 9 vào phần tử có chỉ số 2 1 2 9 4 3 8 5 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8
- Minh họa Ví dụ 1 Một mảng a có 6 phần tử a = {1, 2, 4, 3, 8, 5}, hãy chèn phần tử 9 vào vị trí có chỉ số 2 của mảng a 1 2 4 3 8 5 I Dời các phần tử từ chỉ số 2 sang phải một đơn vị 1 2 4 4 3 8 5 I Gán giá trị 9 vào phần tử có chỉ số 2 1 2 9 4 3 8 5 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8
- Minh họa Ví dụ 1 Một mảng a có 6 phần tử a = {1, 2, 4, 3, 8, 5}, hãy chèn phần tử 9 vào vị trí có chỉ số 2 của mảng a 1 2 4 3 8 5 I Dời các phần tử từ chỉ số 2 sang phải một đơn vị 1 2 4 4 3 8 5 I Gán giá trị 9 vào phần tử có chỉ số 2 1 2 9 4 3 8 5 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8
- Xóa một phần tử trong mảng I Dời các phần tử về phía trước một đơn vị I Chi phí để xóa một phần tử trong mảng cũng là O(n) Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 9
- Xóa một phần tử trong mảng (cont.) Chương trình 2: Hàm cài đặt xóa một phần tử tại vị trí k của mảng a có n phần tử 1 void Remove (int a[], int &n, int k) 2 { 3 for (int i = k; i < n - 1; i++) 4 a[i] = a[i + 1]; 5 n--; 6 } Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
- Minh họa Một mảng a có 6 phần tử a = {2, 1, 4, 3, 7, 5}, hãy xóa phần tử có chỉ số 1 của mảng a 2 1 4 3 7 5 I Dời các phần tử từ chỉ số 2 sang phải một đơn vị 2 4 3 7 5 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 11
- Minh họa Một mảng a có 6 phần tử a = {2, 1, 4, 3, 7, 5}, hãy xóa phần tử có chỉ số 1 của mảng a 2 1 4 3 7 5 I Dời các phần tử từ chỉ số 2 sang phải một đơn vị 2 4 3 7 5 Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 11
- DANH SÁCH LIÊN KẾT CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Vấn đề của mảng Vấn đề Làm sao có thể thêm (hay xóa) 1 phần tử mà không phải di chuyển các phần tử như trong mảng I Tách rời các phần tử trong mảng I Kết dính chúng lại với nhau bằng các “liên kết” Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 13
- Vấn đề của mảng (cont.) Ví dụ 2 Một danh sách 4 phần tử {A, B, C, D} có thể biểu diễn bằng một chuỗi các “móc xích” như sau head A B C D Chèn một phần tử E vào vị trí của phần tử B thì chuỗi trở thành head A E B C D Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 14
- Danh sách liên kết Định nghĩa 2 Danh sách liên kết (linked list) là một tập hợp các phần tử X = {x0 , x1 , ..., xn−1 } được tổ chức tuyến tính I Các phần tử xi được liên kết với các phần tử đứng trước hoặc đứng sau I Các phần tử xi không thể truy xuất qua chỉ số I Các phần tử trong một danh sách liên kết sẽ được gọi là nút (node) Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 15
- Danh sách liên kết (cont.) Đặc điểm của danh sách liên kết I Sử dụng con trỏ I Cấp phát bộ nhớ động I Dãy tuần tự các nút I Giữa hai nút có một hay nhiều con trỏ liên kết I Các nút không cần phải liên tiếp nhau trong bộ nhớ vật lý I Có thể mở rộng tùy ý I Thao tác thêm/xóa không cần phải dịch chuyển phần tử Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 16
- Ứng dụng của danh sách liên kết Kiểu dữ liệu danh sách liên kết phù hợp với các ứng dụng có dữ liệu không phức tạp và hay bị thay đổi bởi các thao tác như: thêm, xóa Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 17
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 | 175 | 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: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 81 | 8
-
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 | 58 | 7
-
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 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: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 159 | 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: Tổng quan về giải thuật và cấu trúc dữ liệu
10 p | 66 | 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 - Bùi Tiến Lên
68 p | 40 | 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 | 47 | 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 | 106 | 4
-
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 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