Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 40 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
40
Dung lượng
1,23 MB
Nội dung
CHƯƠNG KIỂU DANH SÁCH LIÊN KẾT GV Th.S Thiều Quang Trung Trường Cao đẳng Kinh tế Đối ngoại Nội dung • Khái niệm danh sách liên kết • Các phép tính danh sách liên kết đơn • Các phép tính danh sách liên kết kép • Ứng dụng danh sách liên kết GV Thiều Quang Trung Danh sách liên kết • Định nghĩa: Danh sách liên kết (DSLK) danh sách mà phần tử kết nối với nhờ vào vùng liên kết chúng • Một phần tử DSLK bao gồm vùng chính: – Vùng chứa thơng tin – Vùng chứa địa chỉ, gọi vùng liên kết • DSLK cấu trúc liệu động nên thực phép thêm vào, loại bỏ phần tử chạy chương trình • Việc lưu trữ DSLK tốn nhớ danh sách đặc phải chứa thêm vùng liên kết GV Thiều Quang Trung Danh sách liên kết • Các kiểu tổ chức DSLK: – Danh sách liên kết đơn: phần tử liên kết với phần tử đứng sau danh sách: A B X Z Y – Danh sách liên kết kép: phần tử liên kết với phần tử đứng trước sau danh sách: A B C D – Danh sách liên kết vòng: phần tử cuối danh sách liên kết với phần tử đầu danh sách: GV Thiều Quang Trung Danh sách liên kết – Danh sách liên kết đơn vòng A B A X B Z C Y D – Danh sách liến kết kép vòng GV Thiều Quang Trung Danh sách liên kết • Các phép tốn danh sách liên kết: Khởi tạo danh sách Kiểm tra danh sách rỗng Tìm kiếm phần tử danh sách Thêm phần tử vào danh sách Hủy phần tử khỏi danh sách Duyệt danh sách Hủy toàn danh sách GV Thiều Quang Trung Danh sách liên kết đơn • Định nghĩa: DSLK đơn loại DSLK mà vùng địa phần tử chứa địa phần tử • Phần tử cuối DSLK đơn trỏ đến NULL NULL head A B X GV Thiều Quang Trung Z Y Danh sách liên kết đơn • Ví dụ: Ta có danh sách theo dạng bảng sau →Ta có danh sách liên kết : Joe – Marta – Bill – Koch - Sahra Address Name Age Link 100 Joe 20 140 110 Bill 42 500 140 Marta 27 110 230 Sahra 25 NULL … … … 500 Koch 31 GV Thiều Quang Trung 230 Cài đặt danh sách liên kết đơn • Khai báo kiểu phần tử kiểu danh sách liên kết đơn • Để đơn giản ta xét node gồm vùng chứa liệu kiểu số nguyên: typedef { int NODE }; typedef { NODE }; struct NODE // kiểu phần tử danh sách info; *pNext; struct LIST // kiểu danh sách liên kết *phead; • Trong thực tế biến info kiểu struct GV Thiều Quang Trung Ví dụ danh sách liên kết đơn GV Thiều Quang Trung 10 Danh sách liên kết kép • Các phép tốn DSLK kép: Khởi tạo danh sách (tương tự DSLK đơn) Thêm phần tử vào danh sách Tìm kiếm phần tử danh sach (tương tự DSLK đơn) Hủy phần tử khỏi danh sách Duyệt danh sách (tương tự DSLK đơn) Hủy toàn danh sách (tương tự DSLK đơn) GV Thiều Quang Trung 26 Các phép tốn DSLK kép • Hàm bổ trợ tạo Node – GV Thiều Quang Trung 27 Các phép tốn DSLK kép • Thêm phần tử vào đầu danh sách GV Thiều Quang Trung 28 Các phép tốn DSLK kép • Thêm phần tử vào đầu danh sách – GV Thiều Quang Trung 29 Các phép tốn DSLK kép • Thêm phần tử vào sau phần tử q: – GV Thiều Quang Trung 30 Các phép toán DSLK kép GV Thiều Quang Trung 31 Các phép toán DSLK kép • Thêm phần tử vào trước phần tử q: – GV Thiều Quang Trung 32 Các phép toán DSLK kép • Hủy phần tử khỏi danh sách: – Hủy phần tử đầu danh sách: GV Thiều Quang Trung 33 Các phép tốn DSLK kép • Hủy phần tử đứng sau phần tử q: GV Thiều Quang Trung 34 Các phép tốn DSLK kép • Hủy phần tử đứng trước phần tử q: GV Thiều Quang Trung 35 Các phép tốn DSLK kép • Hủy phần tử có giá trị x: GV Thiều Quang Trung 36 Ứng dụng danh sách Máy tính bỏ túi: - Mơ tả: xây dựng chương trình minh họa máy tính bỏ túi dạng đơn giản - Cách biểu diển: Phép toán nhập vào dạng hậu tố + VD: tính a*(b+c) + biểu thức hậu tố: abc+* - Ứng dụng stack để tính kết biểu thức GV Thiều Quang Trung 37 Ứng dụng danh sách Bài toán đa thức: - Cộng, trừ, nhân, chia đa thức GV Thiều Quang Trung 38 Ứng dụng danh sách Bài tốn tính giá trị biểu thức: - Biểu thức dạng trung tố: cách viết tự nhiên biểu thức VD: 8+2*(5-3) - Biểu thức dạng hậu tố(postfix): gọi dạng ký pháp nghịch đảo Ba Lan (reverse Polish) Trong biểu thức dạng này, tốn tử ln đứng sau tốn hạng VD: 8+2*(5-3) → 8253-*+ GV Thiều Quang Trung 39 GV: Thiều Quang Trung 40 ... Quang Trung 13 Các phép toán DSLK đơn Thêm phần tử vào DSLK: • Tạo node: // Gán thông tin cho phần tử p GV Thiều Quang Trung 14 Các phép toán DSLK đơn 4. 1 Thêm vào đầu DSLK: GV Thiều Quang Trung. .. Thêm phần tử vào đầu danh sách – GV Thiều Quang Trung 29 Các phép tốn DSLK kép • Thêm phần tử vào sau phần tử q: – GV Thiều Quang Trung 30 Các phép toán DSLK kép GV Thiều Quang Trung 31 ... tự DSLK đơn) GV Thiều Quang Trung 26 Các phép toán DSLK kép • Hàm bổ trợ tạo Node – GV Thiều Quang Trung 27 Các phép toán DSLK kép • Thêm phần tử vào đầu danh sách GV Thiều Quang Trung 28 Các phép