Đang tải... (xem toàn văn)
BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG ÁBÀI TẬP LỚNHỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬTĐỀ TÀI: QUẢN LÝ CÁC SỐ NGUYÊN DÙNG DSLK ĐÔISinh viên thực hiệnKhóaLớpMã sinh viên.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á
BÀI TẬP LỚN
HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬTĐỀ TÀI: QUẢN LÝ CÁC SỐ NGUYÊN DÙNG DSLK ĐÔI
Sinh viên thực hiệnKhóaLớpMã sinh viên
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trang 3MỤC LỤC:
I Danh sách liên kết đôi 5
II Cấu trúc dữ liệu của danh sách liên kết đôi 5
- Cấu trúc của một Node 4
- Cấu trúc danh sách liên kết đôi 6
III Các thao tác trong danh sách liên kết đôi 6
IV Bài toán 8
Trang 4DANH MỤC BẢNG BIỂU, HÌNH VẼ:
Hình 1.1 Ví dụ về danh sách liên kết đôi 5
Hình 2.1 Cấu trúc của một node 5
Hình 2.2 Xây dựng danh sách liên kết kép 6
Hình 2.3 Cấu trúc danh sách liên kết đôi 6
Hình 3.1 Chèn vào đầu List 7
Hình 3.2 Chèn vào cuối List 8
Hình 3.3 Xuất thông tin ra màn hình 8
Hình 4.1 Sơ đồ nhập vào chuỗi a 9
Trang 5I Danh sách liên kết đôi
- Danh sách liên kết đôi (Doubly linked list) là danh sách liên kết mà mỗi phần tử có hai liên kết đến phần tử liền trước và liền sau nó.
- Khi duyệt các nút sẽ thực hiện theo hai chiều về trước và về sau thay vì thực hiền duyệt một chiều như danh sách liên kết đơn.
Hình 1.1 Ví dụ về danh sách liên kết đôi
II Cấu trúc dữ liệu của danh sách liên kết đôi
- Cấu trúc của một Node:
Mô Ut node trong danh sách liên kết kép đươꄣc cấu thành tư뀀 ba thành phần là dư뀃 liê Uu và phần kết nối tới node kế tiếp và node trước nó.
Hình 2.1 Cấu trúc của một node Trong đó:
o Data: Là giá trị của Node o Prev: Là con trỏ tới node trước o Next: Là con trỏ tới node kế tiếp
Xây dựng danh sách liên kết kép bởi liên kết các node với nhau.
Trang 6Hình 2.2 Xây dựng danh sách liên kết kép - Cấu trúc danh sách liên kết đôi:
Hình 2.3 Cấu trúc danh sách liên kết đôi
III Các thao tác trong danh sách liên kết đôi
Trong danh sách liên kết đôi cũng có các thao tác tương tự như danh sách liên kết đơn, các thao tác này đươꄣc sử dụng rất nhiều khi làm việc với DSLK.
Tạo Node mới trong DSLK đôi Chèn Node trong DSLK đôi Xóa Node trong DSLK đôi Duyệt DSLK đôi
Tìm kiếm và sắp xếp trong DSLK đôi
Chèn Node trong danh sách liên kết đôi có hai trường hơꄣp là: chèn vào đầu, chèn vào cuối.
Xóa Node trong danh sách liên kết đôi cũng có hai trường hơꄣp là: xóa ở đầu và xóa ở cuối.
Việc chèn dư뀃 liệu vào đầu trong danh sách liên kết kép:
Trang 7Hình 3.1 Chèn vào đầu List • Nếu head = NULL, ta sẽ cho cả head và tail = newNode.
• Nếu head != NULL, ta sẽ cập nhật lại head mới là newNode Ta cần tạo liên kết giư뀃a head hiện tại với newNode trước khi cho newNode làm head mới Việc chèn dư뀃 liệu vào cuối trong danh sách liên kết kép:
Hình 3.2 Chèn vào cuối List • Nếu head = NULL, newNode sẽ là head và tail luôn
• Nếu head != NULL, cập nhật lại tail mới là newNode Ta cần tạo liên kết thằng tail hiện tại với newNode trước khi để newNode làm tail mới.
Duyệt danh sách liên kết:
Hình 3.3 Xuất thông tin ra màn hình
Trang 8• Ta sẽ duyệt bắt đầu tư뀀 Node head cho tới trước khi gặp Node NULL bằng cách dùng con trỏ next.
IV Bài toán
Cho một danh sách lưu trư뀃 các số nguyên Viết chương trình tạo menu thực hiện các chức năng 1,2,3.
1 Khởi tạo danh sách, quá trình nhập sẽ dư뀀ng lại khi nhấn # 2 Nhập vào một số k, đếm các số = k, thông báo số lươꄣng số đếm đươꄣc là
Trang 9Hình 4.3 Khởi tạo Kết quả:
Trang 10Hình 4.4 Kết quả câu 1 - Yêu cầu 2:
Sơ đồ:
Trang 11Hình 4.5 Sơ đồ câu 2 Code:
Hình 4.6 Nhập vào số đếm k, số đó là chẵn hay lẻ Kết quả:
Trang 13Hình 4.9 Tính trung bình cộng các số lẻ dương Kết quả:
Hình 4.10 Kết quả câu 3 - Tạo Menu:
Trang 14Hình 4.11 Tạo Menu
Hình 4.12 Tạo Menu