1. Trang chủ
  2. » Luận Văn - Báo Cáo

KỸ THUẬT LẬP TRÌNH DANH SÁCH LIÊN KẾT

69 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Kỹ Thuật Lập Trình Danh Sách Liên Kết
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Khoa Công Nghệ Thông Tin
Năm xuất bản 2009
Thành phố HCMUS
Định dạng
Số trang 69
Dung lượng 0,91 MB

Nội dung

Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thơng tin KỸ THUẬT LẬP TRÌNH DANH SÁCH LIÊN KẾT Nội dung trình bày Giới thiệu Các loại danh sách liên kết Các thao tác danh sách liên kết So sánh danh sách liên kết mảng HCMUS - 2009 Giới thiệu Mảng: cấu trúc liệu quen thu c  Số lượng phần tử cố định (tĩnh)  Cấp phát vùng nhớ liên tục  Truy xuất phần tử thông qua số HCMUS - 2009 Giới thiệu Đánh giá thao tác mảng:  Truy xuất phần tử?  Cập nhật?  Chèn phần tử?  Xoá phần tử? HCMUS - 2009 Giới thiệu Thực tế:  Khơng xác định xác số lượng phần tử • Danh sách bệnh nhân: tăng/giảm • Danh sách sinh viên: tăng/giảm  Vùng nhớ thay đổi q trình sử dụng => Khơng đủ vùng nhớ cấp phát liên tục => Cấu trúc liệu đ ng đáp ứng nhu cầu HCMUS - 2009 Các loại danh sách liên kết  Danh sách liên kết đơn  singly linked list  uni-directional linked list  Danh sách liên kết kép  doubly linked list  bi-directional linked list  Danh sách liên kết vòng  circularly linked list  ring list HCMUS - 2009 Các loại danh sách liên kết Danh sách liên kết đơn M i phần tử có M T liên kết đến M T phần tử khác (phần tử đứng sau) HCMUS - 2009 Các loại danh sách liên kết Danh sách liên kết kép M i phần tử có HAI liên kết đến hai phần tử đứng sau trước HCMUS - 2009 Các loại danh sách liên kết Danh sách liên kết vịng Có mối liên kết phần tử cuối phần tử đầu HCMUS - 2009 Phần tử danh sách liên kết Phần tử (Node, Element)  Phần tử = Dữ liệu + Liên kết  Ví dụ: • Phần tử có liên kết • Phần tử có liên kết HCMUS - 2009 10 Danh sách liên kết kép Các thao tác Chèn vào đầu danh sách int AddHead(DNODE *& pHead, DNODE *& pTail, float Data)  Bước 1:  Bước 2:  Bước 3: HCMUS - 2009 55 Danh sách liên kết kép Các thao tác Chèn vào cuối danh sách int AddTail(DNODE *& pTail, float Data) - Bước 1: - Bước 2: - Bước 3: HCMUS - 2009 56 Danh sách liên kết kép Các thao tác Chèn sau m t phần tử: pNode int AddAfter(DNODE *& pHead, DNODE *pNode, float Data) int AddAfter(DNODE *& pTail, DNODE *pNode, float Data) HCMUS - 2009 57 Danh sách liên kết kép Các thao tác Chèn trước m t phần tử: int AddBefore(DNODE *& pHead, DNODE *pNode, float Data) int AddBefore(DNODE *& pTail, DNODE *pNode, float Data) HCMUS - 2009 58 Danh sách liên kết kép Các thao tác Hủy m t phần tử đứng sau m t phần tử cho trước pNode cần xóa int RemoveAfter(DNODE *& pHead, DNODE *pNode) int RemoveAfter(DNODE *& pTail, DNODE *pNode) HCMUS - 2009 59 Danh sách liên kết kép Các thao tác Duyệt danh sách Truy xuất phần tử danh sách Xóa danh sách HCMUS - 2009 60 Các thao tác danh sách liên kết kép Bài tập Cho DSLK kép L mà m i node có lưu thơng tin m t số nguyên Viết hàm loại bỏ tất node có thơng tin giá trị K cho trước HCMUS - 2009 61 Danh sách liên kết vịng Nhắc lại: có mối liên kết phần tử cuối phần tử đầu HCMUS - 2009 Bài giảng Cấu trúc liệu 62 Danh sách liên kết vịng Các thao tác Tìm m t phần tử danh sách vòng:  Kiểm tra việc duyệt hết danh sách nào? Duyệt danh sách:  Có thể duyệt danh sách từ m t phần tử bất kì!! HCMUS - 2009 63 Danh sách liên kết vòng Các thao tác Thêm đầu danh sách Thêm cuối danh sách HCMUS - 2009 64 Danh sách liên kết vòng Các thao tác Hủy phần tử đầu Hủy phần tử cuối Hủy danh sách HCMUS - 2009 65 Danh sách liên kết vòng Bài tập Lập giải thuật thực phép sau danh sách liên kết vịng:  Ghép danh sách nói vịng có nút “đầu danh sách” trỏ p q thành m t danh sách mà nút đầu danh sách trỏ p  Lập m t danh sách nối vịng có nút đầu danh sách trỏ L HCMUS - 2009 66 So sánh danh sách liên kết mảng Danh sách liên kết Mảng - Số phần tử không cần xác định trước - Cần xác định trước số phần tử - Cấp phát vùng nhớ riêng lẻ cho phần tử - Cần cấp phát vùng nhớ liên tục đủ lớn để lưu trữ mảng -> lãng phí khơng dùng hết - Truy xuất tuần tự, danh sách liên kết đơn duyệt chiều - Truy xuất ngẫu nhiên, đơn giản, nhanh chóng - Cần nhiều nhớ để lưu trữ trỏ tham chiếu - Không cần - Thêm/xóa phần tử cuối: O(1) - Thêm/xóa phần tử cuối: O(1) - Thêm/xóa phần tử giữa: O(1) - Thêm/xóa phần tử giữa: O(n) HCMUS - 2009 67 So sánh danh sách liên kết đơn kép DSLK kép: cho phép duyệt danh sách theo chiều DSLK kép cần nhiều b nhớ để lưu trữ DSLK kép: thao tác phức tạp (vì phải cập nhật trỏ) HCMUS - 2009 68 So sánh danh sách liên kết tuyến tính liên kết vịng DSLK vịng thường dùng để diễn tả cấu trúc chu trình tự nhiên DSLK vịng: duyệt danh sách phần tử HCMUS - 2009 69

Ngày đăng: 22/09/2022, 16:30

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN