Cơ sở dữ liệu - Danh sách liên kết

Được khai báo tường minh  Tồn tại khi vào phạm vi khai báo và chỉ mất khi ra khỏi phạm vi này.  Được cấp phát vùng nhớ trong vùng dữ liệu (data segment) hoặc là Stack. Kích thước không thay đổi trong suốt quá trình sống.

pdf22 trang | Chia sẻ: thuychi16 | Lượt xem: 875 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Cơ sở dữ liệu - Danh sách liên kết, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
G V : L Ê T H Ị N GỌC HẠN H DANH SÁCH LIÊN KẾT 9/10/2015 Data structure & Algorithms 1 NỘI DUNG  Cấp phát động và cấp phát tĩnh  Con trỏ và cấp phát động  Danh sách liên kết 9/10/2015 Data structure & Algorithms 2 BIẾN TĨNH  Được khai báo tường minh  Tồn tại khi vào phạm vi khai báo và chỉ mất khi ra khỏi phạm vi này.  Được cấp phát vùng nhớ trong vùng dữ liệu (data segment) hoặc là Stack. Kích thước không thay đổi trong suốt quá trình sống. 9/10/2015 Data structure & Algorithms 3 BIẾN ĐỘNG  Không được khai báo tường minh  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ác biến này không theo quy tắc phạm vi (tĩnh)  Vùng nhớ của biến được cấp phát trong Heap.  Kích thước có thể thay đổi trong quá trình sống 9/10/2015 Data structure & Algorithms 4 CON TRỎ VÀ CẤP PHÁT ĐỘNG 9/10/2015 Data structure & Algorithms 5 CON TRỎ VÀ CẤP PHÁT ĐỘNG 9/10/2015 Data structure & Algorithms 6 CON TRỎ VÀ CẤP PHÁT ĐỘNG 9/10/2015 Data structure & Algorithms 7 DANH SÁCH LIÊN KẾT (LINKED LIST)  Mảng là một hình thức liên kết ngầm  Các phần tử trong mảng được cấp phát vùng nhớ một cách liên tiếp nhau  Với T là kiểu dữ liệu cho trước, xét mảng các phần tử kiểu T. Ta có: Address(i)=Address(0)+(i-1)*sizeof(T) 9/10/2015 Data structure & Algorithms 8 DANH SÁCH LIÊN KẾT  Một số loại danh sách liên kết (DSLK): • 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 • .. 9/10/2015 Data structure & Algorithms 9 DANH SÁCH LIÊN KẾT 9/10/2015 Data structure & Algorithms 10 DANH SÁCH LIÊN KẾT  Mỗi phần tử của danh sách đơn là một cấu trúc chứa 2 thành phần chính: - data: lưu trữ các thông tin về bản thân phần tử. - link: 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.  Con trỏ Head: dùng để lưu trữ địa chỉ phần tử đầu ds, nên ta gọi Head là đầu xâu(ds).  Con trỏ Tail: giữ địa chỉ phần tử cuối xâu. 9/10/2015 Data structure & Algorithms 11 DANH SÁCH LIÊN KẾT 9/10/2015 Data structure & Algorithms 12 DANH SÁCH LIÊN KẾT 9/10/2015 Data structure & Algorithms 13 KHAI BÁO DSLK typedef struct NODE { int data; NODE* next; }NODE; typedef struct LIST { NODE* pHead; NODE* pTail; }LIST; 9/10/2015 Data structure & Algorithms 14 CÁC THAO TÁC TRÊN DSLK  Khai báo danh sách  Tạo một phần tử cho danh sách  Chèn một phần tử vào danh sách  Tìm một phần tử trong danh sách đơn  Huỷ một phần tử khỏi danh sách  Duyệt danh sách  Sắp xếp danh sách 9/10/2015 Data structure & Algorithms 15 TẠO PHẦN TỬ TRONG DSLK void Initial(LinkList &l) { l.head = l.tail = NULL; } 9/10/2015 Data structure & Algorithms 16 THÊM 1 NÚT VÀO ĐẦU DSLK 9/10/2015 Data structure & Algorithms 17 THÊM 1 NÚT VÀO CUỐI DSLK 9/10/2015 Data structure & Algorithms 18 THÊM 1 NÚT VÀO SAU 1 NÚT 9/10/2015 Data structure & Algorithms 19 THÊM 1 NÚT VÀO TRƯỚC 1 NÚT 9/10/2015 Data structure & Algorithms 20 HỦY 1 NÚT ĐẦU DSLK Danh sách rỗng: không làm gì cả Danh sách không rỗng (nếu sau khi hủy mà pHead = NULL thì pTail = NULL) 9/10/2015 Data structure & Algorithms 21 HỦY 1 NÚT SAU 1 NÚT q == NULL: hủy nút đầu danh sách q != NULL 9/10/2015 Data structure & Algorithms 22