Danh sách list trong cấu trúc dữ liệu
Môn: CẤU TRÚC DỮ LIỆU Chương 4: DANH SÁCH (LIST) NỘI DUNG CHƯƠNG Khái niệm danh sách Các phép toán danh sách Danh sách đặc Định nghĩa Biểu diễn danh sách đặc Các thao tác danh sách đặc Ưu nhược điểm ứng dụng Danh sách liên kết Định nghĩa Danh sách liên kết đơn Danh sách liên kết kép Ưu nhược điểm danh sách liên kết Danh sách hạn chế Hàng đợi Ngăn xếp Ứng dụng danh sách hạn chế BÀI TẬP Khái niệm danh sách Danh sách a1, a2, ….aN tập hợp phần tử có kiểu liệu xác định chúng có mối quan hệ Nếu biết phần tử vị trí phần tử ai+1 Số phần tử danh sách chiều dài danh sách Danh sách rỗng danh sách có chiều dài = Cho T kiểu định nghĩa trước, kiểu danh sách T X gồm phần tử thuộc kiểu T định nghĩa là: TX = < VX , OX > Trong : VX = { tập hợp thứ tự gồm số biến động phần tử kiểu T } OX = { tạo danh sách; tìm phần tử danh sách; chèn phần tử vào danh sách; huỷ phần tử khỏi danh sách; liệt kê danh sách, xếp danh sách.} Các phép toán danh sách Tùy theo loại danh sách có phép tốn khác nhau, phép tốn thơng thường sau: 2.1 Tạo danh sách Đưa vào danh sách nội dung phần tử Chiều dài danh sách xác định 2.2 Thêm phần tử vào danh sách Khi thêm phần tử chiều dài danh sách tăng lên Có thao tác thêm vào đầu, cuối hay vị trí xác định danh sách 2.3 Tìm kiếm phần tử danh sách Tìm phần tử danh sách thỏa mãn điều kiện Dùng thuật tốn tìm kiếm chương “Tìm kiếm” 2.4 Loại bớt phần tử danh sách Chiều dài danh sách giảm xuống phần tử Công việc loại bớt bao gồm thao tác tìm kiếm phần tử cần hủy danh sách Các phép toán danh sách (tt) 2.5 Sửa đổi giá trị phần tử danh sách Thay đổi thông tin phần tử danh sách Công việc cập nhật phần tử bao gồm thao tác tìm kiếm phần tử cần hủy danh sách 2.6 Sắp xếp danh sách Dùng thuật toán chương xếp 2.7 Tách danh sách thành nhiều danh sách Tách danh sách thành DS theo quy luật chia Tổng chiều dài danh sách chia chiều dài danh sách ban đầu 2.8 Nhập nhiều danh sách thành danh sách Nhập danh sách thành danh sách Tổng chiều dài danh sách tổng chiều dài danh sách ban đầu Có thể ghép danh sách hay trộn lẫn theo phương pháp định 2.9 Sao chép danh sách: Sao chép toàn nội dung danh sách thành danh sách khác 2.10 Hủy danh sách: Huỷ nội dung hay vùng nhớ chứa DS Danh sách đặc (Condensed List) 3.1 Định nghĩa Danh sách đặc danh sách mà không gian nhớ lưu trữ phần tử nằm kề cận nhớ 3.2 Biểu diễn danh sách đặc Biểu diễn danh sách đặc dùng 1mảng phần tử có kiểu dử liệu kiểu liệu phần tử danh sách Cần biết chiều dài tối đa danh sách đặc thông qua biến Cần biết chiều dài thực danh sách đặc thông qua biến VD:#define MaxLength 1000 int RealLength; T CD_List[MaxLength] Hay: T * CD_List = new T[MaxLength] Danh sách đặc (tt) 3.3 Các thao tác danh sách đặc Một số thao tác danh sách đặc thống kê tóm tắt: 3.3.1 Khởi tạo danh sách Khởi tạo danh sách cho chiều dài danh sách trở void CD_Initialize(int &Len) { Len = 0; return; } Danh sách đặc (tt) 3.3 Các thao tác danh sách đặc (tt) 3.3.2 Tạo danh sách & nhập danh sách Tạo danh sách có chiều dài tối đa MaxLen, hàm trả giá trị thực danh sách tạo int CD_Create_List(T M[], int &Len) { if (Len > MaxLen) Len = MaxLen; for (int I = 0; i< Len;I++) M[I] = InputOneElement(); return (Len); } T InputOneElement() { …} Danh sách đặc (tt) 3.3 Các thao tác danh sách đặc (tt) 3.3.3 Thêm phần tử vào danh sách Thêm phần tử có giá trị NewValue vào danh sách có chiều dài Length vị trí InsPos B1: IF (Length = MaxLen) Thực BKT B2: Pos = Length+1 B3: IF(Pos = InsPos) Thực B7 B4: M[Pos] = M[Pos -1] B5: Pos-B6: Lặp lại B3 B7:M[InsPos] = NewValue B8: Length++ BKT: Kết thúc Danh sách đặc (tt) 3.3 Các thao tác danh sách đặc (tt) 3.3.3 Thêm phần tử vào danh sách (tt) int CD_InsertElement(T M[], int &Len, T NewValue, int InsPos) { if (Len == MaxLen) return (-1); for (int I = Len; I >InsPos; I++) M[I] = M[I-1]; M[InsPos] = NewValue; Len++; return (Len); } 10 ... chép danh sách: Sao chép toàn nội dung danh sách thành danh sách khác 2.10 Hủy danh sách: Huỷ nội dung hay vùng nhớ chứa DS Danh sách đặc (Condensed List) 3.1 Định nghĩa Danh sách đặc danh sách. .. vào danh sách; huỷ phần tử khỏi danh sách; liệt kê danh sách, xếp danh sách. } Các phép toán danh sách Tùy theo loại danh sách có phép tốn khác nhau, phép tốn thơng thường sau: 2.1 Tạo danh sách. .. sách ban đầu 2.8 Nhập nhiều danh sách thành danh sách Nhập danh sách thành danh sách Tổng chiều dài danh sách tổng chiều dài danh sách ban đầu Có thể ghép danh sách hay trộn lẫn theo phương