Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 7: Danh sách liên kết
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 7: Danh sách liên kết Bài 7Danh sách liên kết (Linked List) 1 Vấn đề của MảngXét lại vấn đề sử dụng mảng để tạo danh sách : Thêm phần tử : O(n) Xoá phần tử : O(n) Số phần tử mảng cố định!!! 2 Vấn đề của Mảng Làm sao có thể thêm (hay xoá) một phần tử mà không phải di chuyển các phần tủ khác? Làm sao để danh sách “động” hơn? Cần dùng một cấu trúc lưu trữ mới với các yêu cầu Các phần tử phải được tách rời ra Và được nối với nhau bằng “dây liên kết” Khi thêm phần tử chỉ cần thay đổi mối đây liên kết chi phí xử lý sẽ thấp hơn 3 DANH SÁCH LIÊN KẾT Mô hình cấu trúc dữ liệu trừu tượng Linked Listlà một dãy các vị trí lữu trữ các đối tượng với sốlượng tùy ý. Nó thiết lập một mối quan hệ trước/sau giữa cácvị trí Danh sách liên kết đơn Danh sách liên kết kép 4Danh sách liên kết đơnCác nút (node) được cài đặt baogồm: next Phần tử lưu trữ trong nó Một liên kết đến nút kế tiếpSử dụng môt con trỏ header, trỏ vàonode đầu danh sách và con trỏ elem nodetrailer trỏ vào node cuối danh sách. trailerheader node NULL elem 5Cấu trúc của một NodeCác thuộc tính Element *elem; Node *next;Các phương thức Node *getnext() - Trả lại địa chỉ của nút kế tiếp Element *getElem() - Trả lại địa chỉ của phần tử mà nút trỏ tới trong nút void setNext(Node *) - Đặt thuộc tính next trỏ đến đ/c phần tử là đối của phương thức void setElem(Element e) - Đặt phần tử e vào nút 6Cấu trúc danh sách liên kết đơn Các thuộc tính: Các phương thức cập nhật: Node *header void replace(Node *p, Element e) Node *trailer Node *insertAfter(Node *p, Element e) Các phương thức Node * insertFirst(Element e) chung: Node * insertLast(Element e) long size(), Node * getNode(int i) int isEmpty() void remove(Node *p) Các phương thức truy cập: Node *first() Node *last() 7Insertion First Hình ảnh phép toán insertFirst(), phép toán trả lại vị trí q trailer header NULL A B C trailerheader NULL A B C X q trailerheader NULL X A B C 8Insertion Last Hình ảnh phép toán insertLast(), phép toán trả lại vị trí q trailer header NULL A B C trailerheader NULL C NULL A B X q trailerheader NULL A B C X 9Insertion After Hình ảnh phép toán insertAfter(p, X), phép toán trả lại vị trí q trailer header p NULL A B C trailerheader NULL A B C X trailerheader NULL A B X C ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu và giải thuật Lập trình C++ Kỹ thuật lập trình Ngôn ngữ lập trình Danh sách liên kếtGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 318 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 276 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 267 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 226 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 208 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 195 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 186 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 170 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 168 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 166 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 164 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 163 0 0 -
3 trang 162 3 0
-
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Trần Hạnh Nhi
123 trang 156 0 0 -
Báo cáo thực tập: Quản lý nhân sự & tiền lương
52 trang 154 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 0 0 -
Giáo trình nhập môn lập trình - Phần 22
48 trang 139 0 0