Bài giảng Cấu trúc dữ liệu 1: Chương 3C - Huỳnh Cao Thế Cường
lượt xem 2
download
Chương này trang bị cho người học những hiểu biết về danh sách liên kết (link list). Nội dung được trình bày trong chương này gồm có: Các loại danh sách liên kết, danh sách liên kết, danh sách liên kết đơn. 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 1: Chương 3C - Huỳnh Cao Thế Cường
- TRƯỜNG ĐẠI HỌC AN GIANG KHOA KỸ THUẬT CÔNG NGHỆ MÔI TRƯỜNG CẤU TRÚC DỮ LIỆU 1 Giảng viên phụ trách: HUỲNH CAO THẾ CƯỜNG Bộ môn Tin học email: hctcuong@agu.edu.vn 1 1
- Chương 3. CẤU TRÚC DỮ LIỆU ĐỘNG Đặt vấn đề Kiểu dữ liệu Con trỏ Danh sách liên kết (link list) Danh sách đơn (xâu đơn) Tổ chức danh sách đơn theo cách cấp phát liên kết Một số cấu trúc dữ liệu dạng danh sách liên kết khác Danh sách liên kết kép Hàng đợi hai đầu (double-ended queue) Danh sách liên kết có thứ tự (odered list) Danh sách liên kết vòng Danh sách có nhiều mối liên kết Danh sách tổng quát 2
- DANH SÁCH LIÊN KẾT Danh sách liên kết? Bao gồm các thành phần có cấu trúc giống nhau. Mỗi cấu trúc gồm: thành phần dữ liệu và con trỏ chỉ tới phần tử kế tiếp trong danh sách – Gọi là con trỏ next 3
- Các loại danh sách liên kết Danh sách liên kết đơn A B C D E Header 4
- Các loại danh sách liên kết Danh sách liên kết kép (Doubly Linked List) A B C D 5
- Các loại danh sách liên kết Danh sách liên kết đơn vòng (Circular Linked List) A B C D E 6
- Các loại danh sách liên kết Danh sách liên kết kép vòng (Circular Linked List) A B C D 7
- Danh sách liên kết Nhận xét Số nút không cố định, thay đổi tùy nhu cầu nên đây là cấu trúc động. Thích hợp thực hiện các thao tác chèn và hủy vì không cần phải dời nút mà chỉ cần sửa các liên kết cho phù hợp. Thời gian thực hiện không phụ thuộc vào số nút danh sách. Tốn bộ nhớ chứa con trỏ liên kết pNext. Truy xuất tuần tự nên mất thời gian. 8
- Danh sách liên kết đơn A B C D E Header 9
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Header a1 a2 … an * NULL 10
- DANH SÁCH LIÊN KẾT ĐƠN Khai báo typedef ... ElementType; //kiểu của phần tử trong danh sách typedef struct Node { ElementType Element; //Chứa nội dung của phần tử Node *Next; / /con trỏ chỉ đến phần tử kế tiếp }; typedef Node *PtrToNode; typedef PtrToNode Position; //kiểu vị trí typedef PtrToNode List; //Danh sách 11
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Để quản lý danh sách ta chỉ cần một biến giữ địa chỉ ô chứa phần tử đầu tiên của danh sách. Biến này gọi là chỉ điểm đầu danh sách (Header) . Header là một ô đặc biệt: Trường dữ liệu của ô này là rỗng, Trường con trỏ Next trỏ tới ô chứa phần tử đầu tiên thật sự của danh sách. Nếu danh sách rỗng thì Header->next trỏ tới NULL. Cần phân biệt rõ giá trị của một phần tử và vị trí (position) của nó trong cấu trúc trên. 12
- DANH SÁCH LIÊN KẾT ĐƠN (tt) - Tạo danh sách rỗng void Makenull_List(List &L) { L = new Node; L->Next = NULL; } - Kiểm tra một danh sách rỗng int IsEmpty_List( List L ) { return L->Next == NULL; } 13
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Chèn một phần tử vào danh sách : 14
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Chèn một phần tử vào danh sách Chèn vào đầu danh sách Chèn vào cuối danh sách Chèn vào danh sách sau một phần tử q 15
- DANH SÁCH LIÊN KẾT ĐƠN (tt) void Insert_List( ElementType X,Position P, List L ) { Position TmpCell; (1) TmpCell = new Node; if( TmpCell == NULL ) printf( "Out of space!!!" ); (2) TmpCell->Element = X; (3) TmpCell->Next = P->Next; (4) P->Next = TmpCell; } 16
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Xóa một phần tử khỏi danh sách : 17
- DANH SÁCH LIÊN KẾT ĐƠN (tt) void Delete_List( ElementType X, List L ) { Position P, TmpCell; P = FindPrevious( X, L ); if( !IsLast( P, L ) ) { TmpCell = P->Next; P->Next = TmpCell->Next; free( TmpCell ); } } 18
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Định vị một phần tử trong danh sách liên kết Position Locate( ElementType X, List L ) { Position P; P = L->Next; while( P != NULL && P->Element != X ) P = P->Next; return P; } 19
- DANH SÁCH LIÊN KẾT ĐƠN (tt) Xác định nội dung phần tử: ElementType Retrieve( Position P ) { return P->Element; } 20
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: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 79 | 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 | 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 (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 | 158 | 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: 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 (2017)
67 p | 106 | 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: 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: 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 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