Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 6 - Châu Thị Bảo Hà
lượt xem 5
download
Chương 6 của bài giảng Cấu trúc dữ liệu và giải thuật giới thiệu về danh sách liên kết (Linked lists) trong cấu trúc dữ liệu. Trong chương này chúng ta sẽ cùng tìm hiểu về danh sách liên kết đơn (Single Linked List), danh sách liên kết đôi (Double Linked List) và danh sách liên kết vòng (Circular Linked List).
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: Chương 6 - Châu Thị Bảo Hà
- CHAPTER 6: DANH SÁCH LIÊN KẾT (LINKED LISTS)
- NỘI DUNG Giới thiệu Danh sách liên kết đơn (Single Linked List) Danh sách liên kết đôi (Double Linked List) Danh sách liên kết vòng (Circular Linked List) 2 Chương 6: Danh sách liên kết
- CẤU TRÚC DỮ LIỆU TĨNH Cấu trúc dữ liệu tĩnh: Khái niệm: Các đối tượng dữ liệu được khai báo tường minh và không thể thay đổi kích thước trong suốt quá trình sống thuộc về kiểu dữ liệu tĩnh Ví dụ: int a; char b[10]; 3 Chương 6: Danh sách liên kết
- VÍ DỤ CẤU TRÚC DỮ LIỆU TĨNH Cấu trúc dữ liệu tĩnh: Ví dụ: Mảng 1 chiều Kích thước cố định (fixed size) Các phần tử nằm kề nhau trong bộ nhớ Truy cập ngẫu nhiên (random access) Chèn 1 phần tử vào mảng, xóa 1 phần tử khỏi mảng tốn nhiều chi phí chèn 4 0 1 2 3 4 n-2 n-1 Chương 6: Danh sách liên kết
- CẤU TRÚC DỮ LIỆU ĐỘNG Cần xây dựng cấu trúc dữ liệu đáp ứng được các yêu cầu: Linh động hơn Có thể thay đổi kích thước trong suốt thời gian sống Có thể được cấp phát hoặc giải phóng bộ nhớ khi người sử dụng yêu cầu Cấu trúc dữ liệu động 5 Chương 6: Danh sách liên kết
- VÍ DỤ CẤU TRÚC DỮ LIỆU ĐỘNG Cấu trúc dữ liệu động: Ví dụ: Danh sách liên kết, cây Cấp phát động lúc chạy chương trình Các phần tử nằm rải rác ở nhiều nơi trong bộ nhớ Kích thước danh sách chỉ bị giới hạn do RAM Tốn bộ nhớ hơn (vì phải chứa thêm vùng liên kết) Khó truy cập ngẫu nhiên Thao tác thêm, xoá đơn giản Insert, Delete 6 Chương 6: Danh sách liên kết
- GIỚI THIỆU DANH SÁCH LIÊN KẾT Danh sách liên kết: Mỗi phần tử của danh sách gọi là nút (node) Mỗi nút có 2 thành phần: phần dữ liệu và phần liên kết (phần liên kết chứa địa chỉ của nút kế tiếp hay nút trước nó) Các thao tác cơ bản trên danh sách liên kết: Thêm một phần tử mới Xóa một phần tử Tìm kiếm … A B X Z Y 7 Chương 6: Danh sách liên kết
- GIỚI THIỆU DANH SÁCH LIÊN KẾT Có nhiều kiểu tổ chức liên kết giữa các phần tử trong danh sách như: Danh sách liên kết đơn Danh sách liên kết kép Danh sách liên kết vòng 8 Chương 6: Danh sách liên kết
- GIỚI THIỆU - DANH SÁCH LIÊN KẾT Danh sách liên kết đơn: mỗi phần tử liên kết với phần tử đứng sau nó trong danh sách: A B X Z Y Danh sách liên kết kép: mỗi phần tử liên kết với các phần tử đứng trước và sau nó trong danh sách: A B C D 9 Chương 6: Danh sách liên kết
- GIỚI THIỆU - DANH SÁCH LIÊN KẾT Danh sách liên kết vòng : phần tử cuối danh sách liên kết với phần tử đầu danh sách: A B X Z Y A B C D 10 Chương 6: Danh sách liên kết
- NỘI DUNG Giới thiệu Danh sách liên kết đơn (Single Linked List) Danh sách liên kết kép (Doule Linked List) Danh sách liên kết vòng (Circular Linked List) 11 Chương 6: Danh sách liên kết
- DANH SÁCH LIÊN KẾT ĐƠN (DSLK ĐƠN) Khai báo Các thao tác cơ bản trên DSLK đơn Sắp xếp trên DSLK đơn 12 Chương 6: Danh sách liên kết
- DSLK ĐƠN – KHAI BÁO Là danh sách các node mà mỗi node có 2 thành phần: Thành phần dữ liệu: lưu trữ các thông tin về bản thân phần tử Thành phần mối liên kết: lưu trữ địa chỉ của phần tử kế tiếp trong danh sách, hoặc lưu trữ giá trị NULL nếu là phần tử cuối danh sách Khai báo node: struct Node { pNext DataType data; // DataType là kiểu data đã định nghĩa trước Node *pNext; // con trỏ chỉ đến cấu trúc Node }; Node* tên_nút; 13 Chương 6: Danh sách liên kết
- DSLK ĐƠN – KHAI BÁO Ví dụ 1: Khai báo node lưu Ví dụ 2: Khai báo node lưu số nguyên: thông tin của một sinh viên: struct Node struct SinhVien { { char Ten[30]; int data; int MaSV; Node *pNext; }; }; struct Node { SinhVien data; Node *pNext; }; 14 Chương 6: Danh sách liên kết
- DSLK ĐƠN – KHAI BÁO Tổ chức, quản lý: Để quản lý một DSLK đơn chỉ cần biết địa chỉ phần tử đầu danh sách Con trỏ pHead sẽ được dùng để lưu trữ địa chỉ phần tử đầu danh sách. Ta có khai báo: Node *pHead; Để tiện lợi, có thể sử dụng thêm một con trỏ pTail giữ địa chỉ phần tử cuối danh sách. Khai báo pTail như sau: Node *pTail; pTail pHead 15 A B X Z Y Chương 6: Danh sách liên kết
- DSLK ĐƠN – KHAI BÁO Ví dụ: Khai báo cấu trúc 1 DSLK đơn chứa số nguyên // kiểu của một phần tử trong danh sách struct Node { int data; Node* pNext; }; Khai báo biến kiểu danh sách: // kiểu danh sách liên kết List tên_biến; struct List { Node* pHead; Node* pTail; }; 16 Chương 6: Danh sách liên kết
- DSLK ĐƠN – KHAI BÁO Tạo node Viết hàm getNode để tạo ra một nút với dữ liệu là x Node* getNode ( DataType x) { x p Gọi hàm?? 17 } Chương 6: Danh sách liên kết
- DANH SÁCH LIÊN KẾT ĐƠN (DSLK ĐƠN) Khai báo Các thao tác cơ bản trên DSLK đơn Sắp xếp trên DSLK đơn 18 Chương 6: Danh sách liên kết
- DSLK ĐƠN Các thao tác cơ bản Tạo danh sách rỗng Thêm một phần tử vào danh sách Duyệt danh sách Tìm kiếm Xóa một phần tử ra khỏi danh sách Hủy toàn bộ danh sách … 19 Chương 6: Danh sách liên kết
- DSLK ĐƠN – CÁC THAO TÁC CƠ SỞ Tạo danh sách rỗng pTail pHead void Init(List &l) { } 20 Chương 6: Danh sách liên kết
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu & thuật toán: Chương 3 - Nguyễn Đức Nghĩa
0 p | 491 | 166
-
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 | 179 | 17
-
Bài giảng Cấu trúc dữ liệu: Chương 10 - Nguyễn Xuân Vinh
31 p | 95 | 10
-
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 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 | 117 | 9
-
Bài giảng Cấu trúc dữ liệu: Chương Giới thiệu - Nguyễn Xuân Vinh
8 p | 112 | 7
-
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 | 62 | 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 (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 59 | 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 | 173 | 6
-
Bài giảng Cấu trúc dữ liệu: Chương 5 - Cấu trúc dữ liệu cây
32 p | 86 | 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 | 115 | 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 | 107 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản
23 p | 48 | 3
-
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 | 70 | 3
-
Bài giảng Cấu trúc dữ liệu 1 - Nguyễn Thái Dư
85 p | 81 | 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 | 53 | 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