btvn.vn
Tìm kiếm Đăng nhập

Dùng danh sách liên kết cho danh sách bài hát

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Nhiệm vụ cần giữ thứ tự ban đầu

Dùng danh sách liên kết để quản lí một danh sách bài hát. Nếu nhập bài A rồi B rồi C mà luôn **chèn đầu**, khi duyệt sẽ được C, B, A. Vì cần in theo thứ tự đã nhập, hãy nối mỗi nút mới vào **cuối**. Tìm bài hát phải đi từ `head` và đếm vị trí từ 1; nếu tên trùng, trả vị trí **đầu tiên**. Dùng tên bài hát giả trong ví dụ để tập xử lí dữ liệu, không phụ thuộc danh mục nhạc thực.

Tạo, tìm và liệt kê trong ba hàm

```python from LinkedList import LL, Node def tao_danh_sach_bai_hat(ten_bai): L = LL() cuoi = None for ten in ten_bai: nut = Node(ten) if cuoi is None: L.head = nut else: cuoi.next = nut cuoi = nut return L def tim_bai(L, ten_can_tim): vi_tri = 1 x = L.head while x is not None: if x.key == ten_can_tim: return vi_tri vi_tri += 1 x = x.next return None def cac_dong_bai_hat(L): ket_qua = [] vi_tri = 1 x = L.head while x is not None: ket_qua.append(f"{vi_tri}. {x.key}") vi_tri += 1 x = x.next return ket_qua ``` Đặt hai lớp `Node`, `LL` của Bài 30 vào tệp `LinkedList.py` (không chép các lệnh chạy thử); lưu ba hàm trên ở `quan_ly_cd.py`, cùng thư mục với `LinkedList.py`. Tệp `main.py` ở cùng thư mục nhập `quan_ly_cd` để dùng. Gọi `tao_danh_sach_bai_hat(["Bài A", "Bài B", "Bài A"])` rồi in từng dòng kết quả sẽ được `1. Bài A`, `2. Bài B`, `3. Bài A`; `tim_bai(L, "Bài A")` cho `1` vì đó là lần đầu gặp tên. Để nhập thật, chương trình chính đọc một số lượng không âm `n`, gọi `input` đúng n lần để tạo dãy tên rồi đưa dãy vào `tao_danh_sach_bai_hat`. Với n=0, danh sách rỗng và `tim_bai` trả `None`.

Bài luyện

Nếu nhập A, B, C rồi luôn chèn đầu, thứ tự khi duyệt từ head là gì?
Chọn một đáp án

Bài luyện

Với danh sách `["Bài A","Bài B","Bài A"]`, tìm “Bài A” theo mã trả vị trí nào?
Chọn một đáp án

Bài luyện

Với danh sách rỗng, `tim_bai` trả gì?
Chọn một đáp án

Đang học