Giáo án và PPT Khoa học máy tính 11 cánh diều Bài 15: Cấu trúc dữ liệu danh sách liên kết và ứng dụng
Đồng bộ giáo án word và powerpoint (ppt) Bài 15: Cấu trúc dữ liệu danh sách liên kết và ứng dụng. Thuộc chương trình Tin học 11 Khoa học máy tính Cánh diều. Giáo án được biên soạn chỉnh chu, hấp dẫn. Nhằm tạo sự lôi cuốn và hứng thú học tập cho học sinh.
Click vào ảnh dưới đây để xem giáo án WORD rõ nét
Giáo án ppt đồng bộ với word
Còn nữa....
Các tài liệu bổ trợ khác
Xem toàn bộ: Trọn bộ giáo án và PPT Khoa học máy tính 11 cánh diều
BÀI 15. CẤU TRÚC DỮ LIỆU DANH SÁCH LIÊN KẾT VÀ ỨNG DỤNG
HOẠT ĐỘNG KHỞI ĐỘNG
GV yêu cầu HS vận dụng kiến thức đã học, trả lời câu hỏi Khởi động tr.146 SGK: Em hãy nêu nhược điểm của danh sách mảng.
HOẠT ĐỘNG HÌNH THÀNH KIẾN THỨC
Hoạt động 1: Cấu trúc danh sách liên kết
Câu 1. Danh sách liên kết là gì? Trình bày cấu trúc của một danh sách liên kết.
Sản phẩm dự kiến:
- Danh sách liên kết (linked list) là một chuỗi nhiều nút (node) lưu trữ rải rác không liền kề trong bộ nhớ.
- Một nút có hai thành phần:
+ Phần Data chứa dữ liệu;
+ Phần liên kết gọi là Next.
- Phần Next trong một nút là con trỏ Next, kí hiệu mũi tên “→”.
- Về bản chất, kí hiệu mũi tên “→” để thể hiện một kiểu dữ liệu kiểu đặc biệt, gọi là kiểu con trỏ. Cho phép truy cập trực tiếp đến một địa chỉ ô nhớ cụ thể.
- Đuôi danh sách là nút cuối cùng trong danh sách, không có nút nào đứng sau.
+ Được thể hiện bằng hình vẽ Next trỏ đến Null và được hiểu rằng “không trỏ đến đâu cả, không đi tiếp được nữa”.
+ Con trỏ Tail trỏ đến nút đuôi danh sách.
- Đầu danh sách được minh họa bằng mũi tên Head trỏ đến nút đầu tiên trong danh sách.
- Khi lập trình, cần phân biệt một nút với phần Data chứa dữ liệu trong nút đó, phân biệt phần Data với chính dữ liệu trong nút đó.
Câu 2. Nêu sự khác nhau giữa danh sách liên kết và mảng.
Sản phẩm dự kiến:
So với mảng, danh sách liên kết có những điểm khác biệt sau:
- Các nút danh sách liên kết không được lưu trữ thành một khối liên tục liền kề mà có thể nằm rải rác, tách rời nhau trong bộ nhớ.
- Không có chỉ số nên trông truy cập bằng chỉ số được.
- Cần duyệt tuần tự các nút, so sánh dữ liệu chứa trong nút với yêu cầu tìm kiếm đề tìm đúng nút phải truy cập xử lí dữ liệu.
* Phép lặp duyệt tuần tự từng nút của danh sách liên kết sử dụng một con trỏ curr (current) chỉ vào nút đang xét, thực hiện như sau:
+ curr = Head bắt đầu từ Head để truy cập nút A;
+ curr = A.Next để truy cập nút B; curr = B.Next để truy cập nút C;...
+ Kết thúc khi gặp curr = Null tức là tình huống curr = D.Next.
Câu 3. Trình bày thao tác thêm nút và gỡ bỏ nút trong danh sách liên kết.
Sản phẩm dự kiến:
Thêm nút có ba trường hợp:
a) Thêm nút vào đầu danh sách
Nút mới thêm thành nút đầu tiên, gọi là E. Thao tác theo hai bước sau:
- Cho E.Next trỏ đến nút A: gán E.Next = Head.
- Cho Head trỏ đến nút E: Head → E.
*Thời gian thực hiện phép thêm nút vào đầu danh sách là O(1), không phụ thuộc độ dài danh sách.
b) Thêm nút vào cuối danh sách
- Nối thêm nút mới vào cuối danh sách, nó trở thành nút cuối cùng.
- Con trỏ Tail trỏ đến nút cuối cùng của danh sách → sửa lại cho Tail trỏ vào E.
* Thời gian thực hiện phép thêm nút vào cuối danh sách là O(1), không phụ thuộc độ dài danh sách.
c) Thêm nút vào giữa danh sách
Tình huống minh họa: curr → B. Thêm nút vào sau nút B.
* Thời gian thực hiện phép thêm nút vào giữa danh sách là O(1), không phụ thuộc độ dài danh sách.
Gỡ bỏ nút:
Tình huống minh họa: curr → B. Gỡ bỏ nút sau nút B.
- Ghi lưu con trỏ để truy cập nút C: tmp = B.Next, tức là tmp → C.
- Cho B.Next trỏ đến nút đứng sau C (là nút D): B.Next = C.Next.
- Sử dụng tmp để giải phóng phần bộ nhớ dành cho C.
*Thao tác gỡ bỏ nút đầu danh sách hay cuối danh sách chỉ khác chút ít. Thời gian thực hiện gỡ bỏ là O(1), không phụ thuộc vào độ dài danh sách.
Danh sách liên kết kép
- Nếu mỗi nút có thêm một con trỏ nữa là Prev trỏ đến nút đứng kề ngay trước thì ta sẽ có danh sách nối kép.
Câu 4. Dựa vào kiến thức đã học, hãy cho biết thời gian thực hiện các phép toán của danh sách liên kết.
Sản phẩm dự kiến:
- Phép tìm kiếm: Tìm nút chứa dữ liệu X (Data = X) để xử lí. Phải thực hiện tìm kiếm tuần tự từ đầu danh sách.
→ Độ phức tạp của phép tìm kiếm là O(n) với n là số nút của danh sách.
- Các thao tác thêm nút, gỡ bỏ nút của danh sách liên kết dù ở bất cứ vị trí nào thì thời gian thực hiện đều là O(1).
→ Điểm ưu việt hơn danh sách mảng.
- Danh sách liên kết tốn thêm chỗ để lưu trữ thành phần Next.
→ Đây là nhược điểm so với danh sách mảng.
Hoạt động 2: Một số kiểu danh sách đặc biệt và ứng dụng của danh sách liên kết
HS thảo luận trả lời câu hỏi:
Cho biết vai trò và ứng dụng của danh sách liên kết trong đời sống.
Sản phẩm dự kiến:
- Sử dụng cấu trúc móc nối để liên kết các nút thành một dãy tuần tự tạo ra kiểu danh sách rất linh hoạt.
- Danh sách liên phát huy ưu điểm trong những trường hợp thường xuyên phải:
+ Thêm phần tử, gỡ bỏ phần tử ở bất cứ vị trí nào trong danh sách;
+ Độ dài danh sách thay đổi nhanh và nhiều trong quá trình sử dụng.
HOẠT ĐỘNG LUYỆN TẬP
Câu 1. Một nút (node) trong danh sách liên kết có bao nhiêu thành phần?
A. 1. B. 2. C. 3. D. 4.
Câu 2. Chọn đáp án sai. Sự khác nhau giữa danh sách liên kết và mảng là
A. Tổ chức thành một khối liên tục liền kề.
B. Các nút có thể nằm rải rác, tách rời nhau trong bộ nhớ.
C. Không có chỉ số nên không truy cập bằng chỉ số được.
D. Cần duyệt tuần tự các nút để tìm đúng nút phải truy cập xử lí dữ liệu.
Câu 3. Cho biết hình ảnh sau đây minh họa thao tác nào?
A. Thêm nút vào đầu danh sách. B. Thêm nút vào giữa danh sách.
C. Thêm nút vào cuối danh sách. D. gỡ bỏ nút trong danh sách.
Câu 4. Thời gian thực hiện phép tìm kiếm của danh sách liên kết là
A. O(1). B. O(n). C. O(n2). D. O(n!).
Câu 5. Cho các phép toán sau:
1. Thêm nút vào cuối danh sách.
2. Thêm nút vào giữa danh sách.
3. Gỡ bỏ nút ở đầu danh sách.
4. Gỡ bỏ nút ở cuối danh sách.
Có bao nhiêu phép toán có thời gian thực hiện không phụ thuộc vào độ dài danh sách?
A. 1. B. 2. C. 3. D. 4.
Đáp án gợi ý:
Câu 1 | Câu 2 | Câu 3 | Câu 4 | Câu 5 |
B | A | C | B | D |
HOẠT ĐỘNG VẬN DỤNG
GV yêu cầu HS hoàn thành bài tập Vận dụng SGK trang 149:
Phân tích yêu cầu ứng dụng của một danh sách nhóm đứng đầu top N và cho biết, nếu dùng kiểu danh sách của Python để thực hiện thì:
a) Những thao tác cần làm với danh sách top N sẽ thực hiện qua các phép toán danh sách Python như thế nào?
b) Kể tên một vài phép toán danh sách của Python không cần dùng đến cho trường hợp này.
Trên chỉ là 1 phần của giáo án. Giáo án khi tải về có đầy đủ nội dung của bài. Đủ nội dung của học kì I + học kì II
Hệ thống có đầy đủ các tài liệu:
- Giáo án word (350k)
- Giáo án Powerpoint (400k)
- Trắc nghiệm theo cấu trúc mới (200k)
- Đề thi cấu trúc mới: ma trận, đáp án, thang điểm..(200k)
- Phiếu trắc nghiệm câu trả lời ngắn (200k)
- Trắc nghiệm đúng sai (250k)
- Lý thuyết bài học và kiến thức trọng tâm (200k)
- File word giải bài tập sgk (150k)
- Phiếu bài tập để học sinh luyện kiến thức (200k)
- ...
Có thể chọn nâng cấp lên VIP đê tải tất cả ở tài liệu trên
- Phí nâng cấp VIP: 700k
=> Chỉ gửi 450k. Tải về dùng thực tế. Nếu hài lòng, 1 ngày sau mới gửi phí còn lại
Cách nâng cấp:
- Bước 1: Chuyển phí vào STK: 1214136868686 - cty Fidutech - MB(QR)
- Bước 2: Nhắn tin tới Zalo Fidutech - nhấn vào đây để thông báo và nhận tài liệu
Xem toàn bộ: Trọn bộ giáo án và PPT Khoa học máy tính 11 cánh diều
TÀI LIỆU GIẢNG DẠY TIN HỌC 11 KẾT NỐI TRI THỨC
Giáo án tin học 11 theo định hướng tin học ứng dụng kết nối tri thức
Giáo án khoa học máy tính 11 kết nối tri thức đủ cả năm
Giáo án tin học ứng dụng 11 kết nối tri thức đủ cả năm
Giáo án chuyên đề Tin học 11 Định hướng tin học ứng dụng kết nối tri thức
Giáo án chuyên đề Tin học 11 Định hướng khoa học máy tính kết nối tri thức
Giáo án powerpoint Tin học 11 Định hướng khoa học máy tính kết nối tri thức
Giáo án powerpoint Tin học 11 Định hướng tin học ứng dụng kết nối tri thức
Giáo án điện tử khoa học máy tính 11 kết nối tri thức
Giáo án điện tử tin học ứng dụng 11 kết nối tri thức